Perlにおけるお勧めのシェバンの書き方
Perlにおける、お勧めのシェバンの書き方。「#!/usr/bin/env perl」。
#!/usr/bin/env perl
Unix/Linuxには、シェバンと呼ばれる機能があり、シェバンに書かれたコマンドで、ファイルに書かれた内容を実行してくれます。
シェバンは「#!」で始まります。
「#!/usr/bin/env perl」がお勧めな理由は、ほとんどのLinux/Unix環境で動くからです。
perlbrewやplenvでユーザー環境にPerlをインストールした場合でも正しく動きます。
envコマンドは、環境変数PATHのディレクトリを検索して最初に見つかったperlで実行してくれます。
envを使うことのデメリット
envを使うことのデメリットは、どのPerlを使うかが確定されないということです。envという名前のとおり、PATH環境変数という、環境に依存します。
Perlスクリプトのポータビリティを高めるか、指定したPerlでプログラムを実行するのと、どちらがメリットがあるかという選択になります。
シェバン行は必須ですか?
シェバン行は必須ではないです。
perlコマンドを実行すれば、シェバンに関係なく、perlで実行できるからです。
perl script.pl
Windows環境であれば、シェバンを書かずに、直接Perlで実行するということも多いでしょう。
サーバー運用の現場で作るプログラムでは、perlスクリプトは、シェバンを書いて、拡張子をなしにして、実行ファイルのように扱うという規約や慣例があれば、それに従ってください。
Perlを中心に開発している現場では、Perlのプログラムは、拡張子をplにして、perlで実行するという選択もよいでしょう。
CGIスクリプトにおいては、シェバンは必須です。CGIというプロトコルは、実行権限のあるファイルをそのまま実行し、perlというコマンドで実行してくれるわけではないからです。ApacheなどのWebサーバーでは、シェバンを書かないと「Internal Server Error」になります。
CPANモジュールに含むスクリプトは「#!perl」がお勧め
CPANモジュールを配布する場合に含むスクリプトは「#!perl」がお勧めです。
#!perl
Mojoliciousの本番サーバー起動コマンドのhypnotoadも「#!perl」を使っています。CPANクライアントは、インストール先の、Unix/Linux/Windowsで、スクリプトを実行できるように、この行を、自動的に書き換えてくれます。