perl – 在@INC中什么时候引用子程序?

前端之家收集整理的这篇文章主要介绍了perl – 在@INC中什么时候引用子程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正如标题所说,我不清楚这样一个子程序将被调用.从 perldoc perldoc可以写:
push @INC,\&my_sub;
sub my_sub {
   my ($coderef,$filename) = @_; # $coderef is \&my_sub
   ...
}

但是这究竟在哪里呢?所需的包或需要的脚本(或包)?我已经尝试了一些哨兵打印声明,但没有这么清楚,有一些我没有得到.

解决方法

Perl在@INC中调用子程序引用,当它遍历@INC以查找模块时.也就是说,当您尝试使用或需要加载模块时,您将触发它,并且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是一个编译时功能,而且这是一个运行时功能.与添加其他“常规”@INC条目一样,您可能希望在程序中尽早在BEGIN块中执行此操作.

猜你在找的Perl相关文章