Perl/CGI研究室 'PERL-LABO'

Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

1行目のアレ

研究内容

Perlプログラムの1行目に必ず入っているアレ…

#!/usr/bin/perl

…なんでしょう?

結果

答えはズバリ、

1行目のアレは、「このファイルはPerlのスクリプトです!」という意味です。 いわば、「俺はPerlで書かれたプログラムなんだぞぅ!」という主張ですね。 「#!」という部分は、正確にはPerlのプログラムの一部ではありません。 シェルっていうものに、「このファイルの残りの部分をこのプログラムに渡してください」と お願いする命令のようなものです。で、その後ろに「Perlへのパス」を書くことで、 残りの部分がPerlに渡され、Perlとして実行されるということなのですね。 ここで言うPerlとは、Perlで書かれたソースコードを解釈して、 書かれている通りに実行するという仕事をするプログラムなんです。 Perlインタプリタとも言います。 Perlとはプログラム言語のことですが、Perlで書かれたプログラムを実行するプログラムも Perlという名前なんです。 同じPerlなのでややこしいですけど。

拡張子で指定するわけじゃないんです

Windowsでは、ファイルの拡張子で自分が誰なのか、誰に実行してもらいたいのかを主張してます。 txtならテキストファイルで通常メモ帳が起動します。 bmpならビットマップファイルでペイントが起動します。 でもUNIX、Linuxにはもともと拡張子という概念がないんですね。 ファイル名や拡張子で、自分が誰なのか、誰に実行してもらいたいのかを主張するっていう習慣が無いんです。 拡張子ではなく、1行目のアレで指定するわけですね。

Perlが起動されるまで

プログラム(スクリプト)は、 シェルさんが始めに実行します。そのシェルさんは、Perlの言葉は理解できません。 だから、シェルさんに「これはシェルさんには分からない言葉で書いてあるんで、 この言葉が分かるパールさんに渡してくださーい」と1行目の例のアレで伝えます。 そうすると、シェルさんはパールさんを探して、渡してくれます。

この主張が無いと、シェルさんが全部実行してくれようとしますが、 シェルさんにはPerlは分かりませんので「なんだか分かりません!」と エラーになってしまいます。なので、必ず1行目のアレは必要です。 それに、Perlへのパスが間違っていても駄目です。 Perlへのパスが間違っていると、シェルさんが「そんな人いません!」と エラーにしてしまいます。

Perlのパス

Perlが置かれている場所はサーバーによって違ったりするようです。 /usr/local/bin/perl だったり /usr/bin/perl だったり。 他のサイトからCGIを貰ってくるときなどは、 パスの違いが原因でエラーになることもありますから注意しましょうね。 1行目のアレは、自分が使っているサーバーに合わせて変更する必要があります。 レンタルサーバーの場合は業者さんのホームページに書いてあったり、 契約したとき教えてくれたりしますが分からなかったら聞けば教えてくれます。

最後に…1行目のアレは「shebang行」といいます。 「shebang」は造語で、読み方は「シェバング」「シェバン」「シバン」などいろいろな流儀があるらしいです。 でも、「1行目のアレ」で充分伝わると思う(^^;

分かったこと

  1. 1行目のアレはシェルに残りの部分をPerlインタプリタに渡すように指示する命令です。
  2. 1行目のアレは必ず1行目でなければなりません。2行目のアレは無効です。
  3. 1行目のアレは「shebang行」といいます。
Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

Copyright (c) 'PERL-LABO' All Rights Reserved.  リンクフリーです。