作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 perlmod/Perl Modules 的示例中有一个BEGIN
堵塞。我查看了一些模块,但没有一个有 BEGIN
堵塞。我应该使用这样的BEGIN
编写模块时阻塞还是可有可无?
最佳答案
您只需要一个BEGIN
如果您需要在编译时而不是运行时执行某些代码,则阻止。
一个例子:假设你有一个模块 Foo.pm
在非标准库目录中(如 /tmp
)。你知道你可以通过修改 @INC
让 perl 找到模块。包括/tmp
.但是,这不起作用:
unshift(@INC, '/tmp');
use Foo; # perl reports Foo.pm not found
use
语句在编译时执行,而
unshift
语句在运行时执行,所以当 perl 查找
Foo.pm
时,包含路径尚未修改(尚未)。
BEGIN { unshift(@INC, '/tmp') };
use Foo;
unshift
语句在编译时和
use Foo
之前执行陈述。
BEGIN
block 。
BEGIN
中有很多你需要的东西 block 可以通过
use
获得-ing 其他模块。例如,在这种情况下,我们可以确定
/tmp
在
@INC
通过使用
lib.pm
模块:
use lib '/tmp';
use Foo;
关于perlmod 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132375/
在 perlmod/Perl Modules 的示例中有一个BEGIN堵塞。我查看了一些模块,但没有一个有 BEGIN堵塞。我应该使用这样的BEGIN编写模块时阻塞还是可有可无? 最佳答案 您只需要一
正在尝试安装 DBD::mysql。共享主机。使用 perlbrew 将 Perl/cpan 安装在我的主目录中。此机器上没有运行 mysql 服务器,也不应该需要运行。 这是我在安装 DBD::my
我是一名优秀的程序员,十分优秀!