加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 22:04:06 所属栏目:大数据 来源:网络整理
导读:正如标题所说,我不清楚这样一个子程序将被调用.从 perldoc perldoc可以写: push @INC,my_sub;sub my_sub { my ($coderef,$filename) = @_; # $coderef is my_sub ...} 但是这究竟在哪里呢?所需的包或需要的脚本(或包)?我已经尝试了一些哨兵打印声明,但
正如标题所说,我不清楚这样一个子程序将被调用.从 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块中执行此操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读