【发布时间】:2012-03-19 23:31:39
【问题描述】:
我有一个简单的 Perl 脚本,它打印出 @INC 如下:
#!/usr/bin/perl
print $_, "\n" for @INC;
我使用./test.pl 和perl test.pl 以两种不同的方式执行脚本,输出如下:
[neevek@~/bin]$ ./test.pl
/Library/Perl/5.12/darwin-thread-multi-2level
/Library/Perl/5.12
/Network/Library/Perl/5.12/darwin-thread-multi-2level
/Network/Library/Perl/5.12
/Library/Perl/Updates/5.12.3
/System/Library/Perl/5.12/darwin-thread-multi-2level
/System/Library/Perl/5.12
/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.12
.
[neevek@~/bin]$ perl test.pl
/opt/local/lib/perl5/site_perl/5.12.3/darwin-multi-2level
/opt/local/lib/perl5/site_perl/5.12.3
/opt/local/lib/perl5/vendor_perl/5.12.3/darwin-multi-2level
/opt/local/lib/perl5/vendor_perl/5.12.3
/opt/local/lib/perl5/5.12.3/darwin-multi-2level
/opt/local/lib/perl5/5.12.3
/opt/local/lib/perl5/site_perl
/opt/local/lib/perl5/vendor_perl
.
我的问题是:使用 ./script.pl 和 perl script.pl 执行 perl 脚本的幕后是什么?是什么导致脚本输出不同的@INC?
【问题讨论】:
-
不同的
perl二进制文件?which perl说什么? -
which perl表示/opt/local/bin/perl,但我用/usr/bin/perl表示沙邦。你们都是对的,谢谢……但我可能错过了…… -
Unix 第 1 课(我给团队中的所有新手)。永远不要依赖当前目录或 PATH。始终使用明确的完全限定路径。
-
我想说至少在某些情况下依赖环境是有意义的,例如它可以很容易地用Perlbrew 切换 Perls。
标签: perl library-path