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)を使ったほうがポータブルになり、トラブルも少ないのでしょう。

*1:ExtUtils::MM_Unix->fixin()メソッド

*2:参考:モダンな Perl の開発環境の構築方法