Re: Perlスクリプトの一行目には何と書くべきなのか
Re: Perlスクリプトの一行目には何と書くべきなのか
もしCPAN形式でスクリプトを配布するなら、それは#!/usr/bin/perl
ないし#!perl
とするべきで、env(1)を使うべきではないと思います。
CPAN形式のディストリビューションでは、インストールするスクリプトのshebang行をインストール直前に修正し、正しいパスに書き換えてくれます。ただし、このルーチン*1はいまのところenv(1)を認識してくれません。つまり、env(1)を使った場合、インストールに使用したperlと実際に実行されるperlが一致するとは限りません。perlを一つしかインストールしていないシステムなら、これでも問題なく動きます。しかし最近では、システムにインストールしてあるperlには触らず、アプリケーション用のperlを別途perlbrewなどでインストールしてそちらを使うということもよく行われるようになりました*2。このような状況下では、env(1)を指定したスクリプトはうまく動かない可能性があります。したがって、CPAN形式で配布するスクリプトではenv(1)を使うべきではありません。ちなみに、前述のperlbrewやcpanmといったスクリプトでは単に#!perl
と書いているようです。
もちろん、CPAN形式でないようなもの、たとえばユーザーが手動でインストールするCGIスクリプトなどではこの限りでありません。おそらくその場合は、元のエントリにあるように、env(1)を使ったほうがポータブルになり、トラブルも少ないのでしょう。