使用perl中的-c和修改@INC的代码

时间:2015-05-23 10:32:07

标签: perl

考虑以下脚本" test.pl"。

test.pl

#usr/bin/perl -w

push (@INC,"path_for_abc");
use abc;

#rest of the code ...

命令提示符:

$ perl -c test.pl

我知道我必须添加"使用lib"编译指示或必须在Begin块中推送@INC内的路径才能使其正常工作。

如果未在@INC中定义模块的路径, 将" perl -c test.pl"推动" path_for_abc" snytax检查?

1 个答案:

答案 0 :(得分:0)

不,当您以perl -c身份运行时,您的示例代码将找不到“abc”模块。在没有 -c的情况下运行时它也找不到它,但你似乎已经知道了。 use在编译时发生。 push直到运行时才会发生,除非它包含在BEGIN块中。如果您这样做(或use lib),那么perl -c下工作。来自perlrun:

  

-c

导致Perl检查程序的语法然后退出   没有执行它。实际上,它会执行BEGINUNITCHECK,   或CHECK块和任何use语句:这些都被视为   发生在程序执行之外。 INITEND块,   但是,将被跳过。