Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中与修改@INC的代码一起使用-c_Perl - Fatal编程技术网

在perl中与修改@INC的代码一起使用-c

在perl中与修改@INC的代码一起使用-c,perl,Perl,考虑以下脚本“test.pl” test.pl 命令提示: 我知道我必须添加“use lib”pragma,或者必须在Begin块中推送@INC内的路径才能使其工作 如果模块的路径未在@INC中定义, snytax检查时,“perl-c test.pl”会推送“abc路径”吗?否,当作为perl-c运行时,示例代码将找不到“abc”模块。它在没有-c的情况下运行时也找不到它,但您似乎已经知道了这一点使用发生在编译时。除非在BEGIN块中包装push,否则直到运行时才会发生。如果您这样做(或者使用

考虑以下脚本“test.pl”

test.pl 命令提示: 我知道我必须添加“use lib”pragma,或者必须在Begin块中推送@INC内的路径才能使其工作

如果模块的路径未在@INC中定义,
snytax检查时,“perl-c test.pl”会推送“abc路径”吗?

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

-c
使Perl检查程序的语法,然后退出 没有执行它。实际上,它将执行并
开始
单元检查
, 或
检查
块和任何
使用
语句:它们被视为 在程序执行之外发生的<代码>初始化
结束
块, 但是,将跳过


除非如您所述,您
使用lib
或将推送包装到
开始
块中,否则它不会。我不太理解您的问题。在这方面,是什么让您认为
perl-c
perl
不同?
#usr/bin/perl -w

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

#rest of the code ...
$ perl -c test.pl