9

次のように出力される単純な Perl スクリプトが@INCあります。

#!/usr/bin/perl
print $_, "\n" for @INC;

と を使用して 2 つの異なる方法でスクリプトを実行する./test.plperl 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 スクリプトをandで実行するための舞台裏は何perl script.plですか? スクリプトが異なる出力をする原因は何@INCですか?

4

2 に答える 2

19

perlスクリプトはシバン ラインから実行され/usr/binますが、コマンド ラインからスクリプトを起動すると、別のperlバイナリ from /opt/somewhere(which perlパスについては を参照) が使用されます。を使用#!/usr/bin/env perlして、両方のオプションを同じように動作させることができます。

于 2012-03-01T13:10:37.323 に答える
10

システムに 2 つの perl がインストールされています。

を実行すると、スクリプトの最初の行に書かれているよう./test.plに、それが選択されます。/usr/bin/perl

を実行すると、環境変数perl test.plで最初に見つかった perlが選択されます。PATH入力which perlして、それがどこにあるかを見つけます。

于 2012-03-01T13:12:21.103 に答える