Perlゼミ

Perlにおけるお勧めのシェバンの書き方

Perlにおける、お勧めのシェバンの書き方。「#!/usr/bin/env perl」。

#!/usr/bin/env perl

Unix/Linuxには、シェバンと呼ばれる機能があり、シェバンに書かれたコマンドで、ファイルに書かれた内容を実行してくれます。

シェバンは「#!」で始まります。

「#!/usr/bin/env perl」がお勧めな理由は、ほとんどのLinux/Unix環境で動くからです。

perlbrewplenvでユーザー環境に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で、スクリプトを実行できるように、この行を、自動的に書き換えてくれます。

hypnotoadで「#!perl」をシェバンとして使っている例

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ、Perlで元気。
ゆとりあるITエンジニアライフのために
Perl情報を前向きに発信中!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!