gpt4 book ai didi

perl - 何时调用@INC 中的子例程引用?

转载 作者:行者123 更新时间:2023-12-04 03:35:02 25 4
gpt4 key购买 nike

正如标题所说,我不清楚何时会调用这样的子例程。来自 require页面位于 perldoc可以写:

push @INC, \&my_sub;
sub my_sub {
my ($coderef, $filename) = @_; # $coderef is \&my_sub
...
}

但这到底去哪里了?需要的包还是需要的脚本(或包)?我已经尝试了一些哨兵 print声明,但都没有这么清楚,我没有得到一些东西。

最佳答案

Perl 调用 @INC 中的子例程引用当它遍历 @INC寻找一个模块。也就是说,当您尝试使用 use 加载模块时会触发它。或 require并且 Perl 在前面的 @INC 中找不到该模块地点。

BEGIN {
push @INC,
sub { print "Oops: There was an error looking for $_[1]\n"; () };
}

eval "use Cat::Burglar";
eval "use Local::NotThere";
require Cat::Burglar;
您需要确保您的子程序引用在 @INC 中。在您尝试加载模块之前。请记住 use是一个编译时特性, require是运行时功能。与添加其他“常规” @INC条目,您可能希望在 BEGIN 中进行在您的程序中尽早阻止。

关于perl - 何时调用@INC 中的子例程引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541119/

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