我有一个简单的Perl脚本,打印出来@INC如下:
#!/usr/bin/perl
print $_, "\n" for @INC;
Run Code Online (Sandbox Code Playgroud)
我用两种不同的方式执行脚本./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
.
Run Code Online (Sandbox Code Playgroud)
我的问题是:用./script.pl和执行perl脚本的幕后操作是perl script.pl什么?是什么导致脚本输出不同@INC?
zou*_*oul 19
在脚本执行perl从/usr/bin通过shebang行,但发射的命令行脚本使用一个不同的perl二进制数,从/opt/somewhere(见which perl的路径).您可以使用#!/usr/bin/env perl这两个选项的行为相同.
Sta*_*amm 10
您的系统上有两个perl安装.
执行时./test.pl,/usr/bin/perl选择它,就像在脚本的第一行写的那样.
执行时perl test.pl,它是在PATH所选环境变量中找到的第一个perl .键入which perl以发现它的位置.
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |