考虑以下脚本" 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检查?
答案 0 :(得分:0)
不,当您以perl -c
身份运行时,您的示例代码将找不到“abc”模块。在没有 -c
的情况下运行时它也找不到它,但你似乎已经知道了。 use
在编译时发生。 push
直到运行时才会发生,除非它包含在BEGIN
块中。如果您这样做(或use lib
),那么将在perl -c
下工作。来自perlrun:
-c
导致Perl检查程序的语法然后退出 没有执行它。实际上,它会执行
BEGIN
,UNITCHECK
, 或CHECK
块和任何use
语句:这些都被视为 发生在程序执行之外。INIT
和END
块, 但是,将被跳过。