自从mod_perl真正更新以来,已经有很长一段时间了,看起来它的开发停止在Apache 2.2上.我一直在等待它可用于Apache 2.4现在很长一段时间,但这还没有发生.
我一直试图找到关于其当前状态的更新答案(2014年),但我发现在论坛和邮件列表中都是非常老的帖子.
到目前为止,Mod_perl对我和我的应用程序来说真的很坚固,我唯一的抱怨是我还不能转向Apache 2.4.与Perl 5.20保持良好的协作,Perl 5.20是目前最新的Perl版本.
所以,我希望有人知道甚至参与者在StackOverflow上阅读这个问题:
mod_perl开发死了吗?
我正在开发可以在 Win32 和 *nix 上运行的 CPAN 发行版。然而,为了让它在 Win32 上工作,它需要另一个只能安装在 Win32 上的 CPAN 分发(模块)。
问题在于,通过将该模块声明为依赖项,它无法安装在 *nix 机器上。但它不会在 *nix 机器上真正使用/需要,只有在 Win32 上运行时。
我的发行版ExtUtils::MakeMaker在自动生成的 hash 中使用和配置依赖项%WriteMakefileArgs。
我尝试Makefile.PL根据运行它的操作系统进行编辑以添加或删除依赖项。然而,这并没有真正用于产生工作META.json和META.yml,这是基于操作系统,我最终执行上产生的make dist。如果我在 Windows 上运行它,那么仅 Win32 的依赖项会添加到这些文件中并破坏 *nix 安装。如果我在 *nix 上运行它,则不会添加依赖项,并且当测试分发的时间到来时,它可能会破坏 Win32 上的安装。
有没有办法为特定的操作系统定义不同的依赖关系,使应用程序在安装发行版时喜欢CPAN或CPANminus可以在每个操作系统上成功运行?
每次看到它都会让我发疯.为什么使用div元素几乎是一种迷恋?
我理解为什么大部分都div在标记中,每个都有一个id或(甚至更好)一个className可以帮助开发一个干净的标记并保持对视觉变化的控制.
但是,例如,我一直看到有关如何使div表现得像表格的问题,即使他们被告知某些事情与x或y浏览器版本不兼容,他们仍然希望做这样的事情:
<div style="display: table">
<div style="display: table-row">
<div style="display: table-cell">Content</div>
<div style="display: table-cell">Content</div>
</div>
<div style="display: table-row">
<div style="display: table-cell">Content</div>
<div style="display: table-cell">Content</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
为什么?......真的:为什么?
为什么这比使用table?更好?或者,为什么使用表格令人厌恶?
表是HTML元素的一部分.它们存在是有原因的,并且有很好的用途.他们并没有被弃用,他们不会很快消失(或者比div那件事早得多).最重要的是:它们在所有浏览器和版本中都表现正常!
所以...为什么让divs表现得像桌子一样?为什么这么多人写HTML/ CSS那样然后为这么脏的东西感到自豪?
这不是tables 独有的.我一直在看divs替换所有html元素,比如h1.. h6,spans等.
为什么??
我正在研究一个Perl脚本,该脚本需要执行一些系统调用才能获取一些系统数据。为了在任何计算机上可靠地解析这些呼叫的输出,我需要确保将呼叫的输出设置为英语。
我面临的问题是,例如在我的PC中,我从这些命令中获取了本地化的输出。我的Windows设置为西班牙语,因此,诸如systeminfo返回数据之类的调用会以西班牙语进行。
是否有命令(或其他命令)可以在命令调用中运行,以使所有系统调用的行为就像系统始终为英语一样,而无需修改系统配置中的任何内容?
预先感谢您的评论。
赏金提示:这个问题的答案一定不能以任何方式干扰系统。它应该是一种从可以在任何机器上工作的系统调用/命令中获得英语答案的方法,而无需修改其配置,注册表或其他方式。
在Perl中,很容易保佑hashref并使用它来存储和读取属性:
package MyPackage;
use strict;
use warnings;
sub new {
bless {}, __PACKAGE__;
}
sub SomeProperty {
my $self = shift;
if (@_) {
return $self->{SomeProperty} = shift;
}
$self->{SomeProperty};
}
# Or even like this to be able to call $obj->OtherProperty = $x;
sub OtherProperty : lvalue {
my $self = shift;
$self->{OtherProperty};
}
Run Code Online (Sandbox Code Playgroud)
但是,我已经看到一些类(来自不同的Perl模块),当转储时,显示一个简单的标量祝福:
$obj = bless( \$8756489, 'Some::Package' );
Run Code Online (Sandbox Code Playgroud)
然而,他们有方法和属性.我理解的方法,can当询问祝福时,将调用包调用的任何子例程$object->name.我不理解的部分是它们如何存储属性.这些物业存放在哪里?
有几次他们接受类似的东西$obj->property = $x,$obj->property($x)并且可以独立于同一类的其他实例.这些物业存放在哪里?
我知道这实际上取决于类的底层实现,它正在做什么或它正在与之交互,并且实际上可以多次回答这个问题(例如,对象只是在某个地方与另一个对象或连接接口,只发送或向它求价值).
但是,如果有一个标量基于对象存储的属性(如在一个不同的概念或方法在Perl类结构)的方式,我真的很想知道.
提前感谢您的任何意见!:-)
我试图让div屏幕居中。这个 div 应该有一个特定的width和height当它适合可用的窗口空间时,但是当可用的窗口空间不够时,它应该缩小以适合,但同时保持其原始的宽高比。
我一直在研究许多适用于减小 的示例width,但没有一个适用于同时适用于窗口大小width和变化的示例。height
这是我当前的 CSS:
* {
border: 0;
padding: 0;
margin: 0;
}
.stage_wrapper {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: gray;
}
.stage {
width: 960px;
height: 540px;
max-width: 90%;
max-height: 90%;
display: flex;
justify-content: center;
align-items: center;
background: chocolate;
object-fit: contain; /* I know this is for images, it's an example of what I'm looking for */
}
Run Code Online (Sandbox Code Playgroud)
而且,我当前的 …
我正在使用WWW::Mechanize从我们的产品提供商加载目录到我们的数据库.我每天每2小时运行一次这个脚本,并使用大约50个同步线程在大约12分钟内完成.
一切都很顺利,直到这个周末.他们让他们的网站离线进行定期维护,一旦他们再次在线,我的脚本就不再有用了.在分析了一些事情后,它归结为以下代码失败:
use strict;
use warnings;
use WWW::Mechanize;
my $mec = WWW::Mechanize->new;
$mec->get('https://www.imstores.com/Ingrammicromx/login/login.aspx');
print $mec->content;
Run Code Online (Sandbox Code Playgroud)
代码消失(大约60秒后),并显示以下消息:
Error GETing https://www.imstores.com/Ingrammicromx/login/login.aspx:
Can't connect to www.imstores.com:443 at test.pl line 7.
Run Code Online (Sandbox Code Playgroud)
现在,这些是让我很难找到问题的要点:
它与网络无关 - 如果我从任何浏览器访问相同的URL,我都会获得该页面.
如果我在包含我的Perl安装的精确副本的远程计算机上尝试相同的代码,它可以工作.
如果我use Net::SSL之前WWW::Mechanize,它需要很长时间,但最终得到页面.
如果我尝试任何其他SSL页面,例如" https://www.paypal.com ",它的工作速度非常快.
然后,它再次在他们的计划维护之前工作.
我不知道还有什么可以尝试的.如果我切换到非SSL版本,它可以工作,但我不想这样做,因为我们自动化采购操作.
除了我想到的许多事情,想一想为什么它在远程机器上工作以及为什么我可以在我的浏览器中打开本地的页面:
是否可能被我的SSL公钥阻止?那可能吗?如果是这样,LWP/Mechanize用于SSL会话的公钥是什么?如何使用不同的公钥?
我当前设置的一些数据:
LWP::UserAgent 版本:6.05WWW::Mechanize 版本:1.72IO::Socket 版本:1.34IO::Socket::SSL 版本:1.85Net::SSL 版本:2.85Crypt::SSLeay 版本:0.64在此先感谢任何有用的评论.
我想知道这只是出于对Perl工作方式的极客好奇心以及你可以用这样的事情走多远.
有些函数被编写为在三种上下文中的每一种上采取不同的行为.
使用以下代码作为一个非常简单的示例:
use 5.012;
say context();
say scalar context();
sub context {
if (wantarray) {
return 'list';
} elsif (defined wantarray) {
return 'scalar';
} else {
return 'void'; # Destined to be discarded
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
list
scalar
Run Code Online (Sandbox Code Playgroud)
你能想办法挑起第三say是输出void后,context()被称为?
我理解这是相当矛盾的,因为无效的上下文可能意味着你并没有真正地返回/分配任何东西.但正如我从Perl工作方式上所读到的那样理解,它并不是什么都没有返回,而是返回值在void上下文中执行后被丢弃.
所以,我想知道:有没有办法以强制列表或标量上下文的方式强制 void上下文,当你碰巧在调用函数时实际上在列表或标量上下文时?
我正在使用一个模块,该模块利用一些原型来允许代码块。例如:
sub SomeSub (&) { ... }
Run Code Online (Sandbox Code Playgroud)
由于原型仅在编译时解析时才有效,如果模块在编译时未解析,我想抛出警告甚至致命。例如:
require MyModule; # Prototypes in MyModule won't be parsed correctly
Run Code Online (Sandbox Code Playgroud)
有没有办法检测某些东西是否在 Perl 的编译或运行时/阶段被执行?
我需要evalPerl中的一些代码,有时可能包含一个exit()调用.一个非常简单的例子是:
use strict;
use warnings;
eval "some_function()";
die $@ if $@;
print "Still alive!\n";
sub some_function {
print "Hello from some_function\n";
exit;
}
Run Code Online (Sandbox Code Playgroud)
我永远不会"活着!" 因为这个exit()电话.
我尝试设置一些键%SIG(QUIT,STOP,TERM,BREAK等),但这不起作用.我也试图重新定义CORE::exit,但没有成功.
如何防止exit()呼叫在被eval编辑时生效?