FreeBSD QandA 329
Q. perl スクリプトに実行許可属性を付けて
% ./foo.pl
としたときと
% perl foo.pl
の場合で挙動が異なることがあります。
A. 前者と後者で起動される perl(1) のパス(とバージョン)が異なっているためです。
前者の形式でスクリプトが実行されると、Unix はスクリプトの1行目を見て
どのプログラムを起動するか判断します。起動されるプログラムは行頭の #!
に続くパス名で、例えば catman(1) のように #!/usr/bin/perl となっていれ
ば、/usr/bin/perl が起動されます。
後者は普通のコマンド実行と同じく、shell によってコマンド検索パスを検索
して見つけ出した perl が使われますので、環境変数 $PATH の設定によって
変化する可能性があります。どの perl が使われるか確認するには which(1)
コマンドを利用して以下の様に入力します。
% which perl
/usr/bin/perl (実行結果)
それぞれの perl がどんなバージョンのものか確認するには -v オプション
を使います。*フルパス* で perl を実行して比べてみてください。
たとえば /usr/local/bin にある perl を確認するには
% /usr/local/bin/perl -v
This is perl, version 5.005_03 built for i386-freebsd
... (省略) ...
と入力します。
なお、/usr/bin/perl については FreeBSD 2.2 系列では Version 4、
FreeBSD 3.0-RELEASE 以降では Version 5 になっています。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。