Hello.
perl(1998/4/18)
いきなり核心に迫ってしまいますが、そんなに急ピッチで話を進める気はないのでリラックスしておつきあい下さい。まずperlそのものの話について。perlについて既に知っている人はここは読み飛ばして構いません。
perlはれっきとした言語でして、よくperlスクリプト等という言い方を見聞きするかもしれませんが、このスクリプトという言い方は本来は正しくありません。perlは実はコンパイラ言語(compiler language)なのです。ただ利用法が他のコンパイラ言語と少しばかり異なっていて、まずコンパイルという作業をあなたがする必要はないのです。perlでプログラムを書いたらそれをいきなり実行させることが出来ます。ここが他のコンパイラ言語と異なる部分です。C/C++等のような通常のコンパイラ言語はプログラムを書いたら、自分でコンパイルだとかリンク等という作業を行って実行形式(Windowsの場合は拡張子が.exeのファイル形式)を作らないといけません。perlの場合はこのコンパイルという作業は必要ありません。プログラムを実行させると勝手にコンパイルされて実行を開始します。ですから、あたかもBASIC等のようなインタプリタ言語(interpreter language)のように使えます。
しかしながらインタプリタ言語の最大の弱点は効率や実行速度にあります。とりわけ実行速度の遅さが大きな弱点です。一方コンパイラ言語の方はコンパイルという作業によって非常に効率や速度の面で有利になりやすいのですが、その反面すぐに実行できないという面があります。ちょっとでもプログラムを変更したら、またコンパイル、リンクといった作業をやり直さないといけません。その点において、perlはインタプリタ言語のように使えるコンパイラ言語なので双方の利点を併せ持っています。
perlを実行させる前に、まずあなたが契約しているISPのサーバにperlがインストールされていることを確認しておきましょう。以下のように入力して下さい。
which perl
perlで書いたプログラムを実行させるのはperlというプログラムです。こんがらがってくるかもしれませんが、「perlという名前のプログラム」があって、このプログラムが「perlで書かれたプログラム」をコンパイル後に実行してくれます。上のwhichコマンドはperlという名前のプログラムが実行可能な状況にあるかどうかを教えてくれます。この時にwhichコマンドが何かしらの表示をするはずです。もしここで
no perl in なんとかかんとか
と表示されたとしたら、残念ながらあなたが契約しているISPのサーバにはperlがインストールされていないか、或いはパスが通っていません。単にパスが通っていないだけという可能性もありますが、CGI(common gateway interface)やSSI(server-side include)が使えるISPの場合は大抵の場合ログイン時のシェルスクリプト(shell script)でパスが設定されているはずなので、この表示が表れたということはおそらくperlがインストールされていません。インストールされていて且つパスが通っていれば
/usr/local/bin/perl
等というように表示されると思います。表示される内容は必ずしも同じとは限りません。perlが使える状況になっている場合にはwhichコマンドはperlという名前のプログラムがどこにあるかを示してくれます。上記の表示はperlという名前のプログラムの在処を示しています。/usr/local/binというディレクトリ傘下にperlという名前のプログラムがある、というわけです。さて早速簡単なプログラムを実行させてみましょう。
print "Hello!\n";
このような内容のファイルを用意して下さい。ファイル名は自由につけてもらって構いません。例えばtest.cgiとでもしておきましょうか。1行しかないのでcatコマンドをリダイレクトして作るのも良いでしょう。ファイルをftpでサーバに転送する場合には必ず転送モードをasciiにして行って下さい。binaryにして転送するとperlが改行コードを正常に認識できずに実行できなくなってしまいます。さて早速実行してみます。以下のようにしてみてください。
perl test.cgi
これでtest.cgiという名前の「perlで書かれたプログラム」を「perlという名前のプログラム」が実行してくれます。さて実行結果は期待通りになったでしょうか? 今回はこのくらいで。