|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
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の言葉は理解できません。 だから、シェルさんに「これはシェルさんには分からない言葉で書いてあるんで、 この言葉が分かるパールさんに渡してくださーい」と1行目の例のアレで伝えます。 そうすると、シェルさんはパールさんを探して、渡してくれます。
この主張が無いと、シェルさんが全部実行してくれようとしますが、 シェルさんにはPerlは分かりませんので「なんだか分かりません!」と エラーになってしまいます。なので、必ず1行目のアレは必要です。 それに、Perlへのパスが間違っていても駄目です。 Perlへのパスが間違っていると、シェルさんが「そんな人いません!」と エラーにしてしまいます。
Perlが置かれている場所はサーバーによって違ったりするようです。 /usr/local/bin/perl だったり /usr/bin/perl だったり。 他のサイトからCGIを貰ってくるときなどは、 パスの違いが原因でエラーになることもありますから注意しましょうね。 1行目のアレは、自分が使っているサーバーに合わせて変更する必要があります。 レンタルサーバーの場合は業者さんのホームページに書いてあったり、 契約したとき教えてくれたりしますが分からなかったら聞けば教えてくれます。
最後に…1行目のアレは「shebang行」といいます。 「shebang」は造語で、読み方は「シェバング」「シェバン」「シバン」などいろいろな流儀があるらしいです。 でも、「1行目のアレ」で充分伝わると思う(^^;
|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
| Copyright (c) 'PERL-LABO' All Rights Reserved. リンクフリーです。 |