gpt4 book ai didi

perlmod 问题

转载 作者:行者123 更新时间:2023-12-04 22:50:28 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com