※ここの解説は、後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
■ 10.パラメータの取得
前回の演算子は、ちょっと難しかったかもしれませんね。
でも、結構使う機会も多いので覚えておいて下さいね。
今回は、ちょっとおもしろいですよ。
「これぞプロミング」という醍醐味が味わえますので期待してください。
今回説明する内容は、「パラメータの取得」です。
パラメータとは、あるまとまった処理に送る変数などのことをいいます。
(パラメータのことを引数ともいう)
「7.テキストの一括表示」でファイル表示の仕方を説明しましたが、表示したいファイルが複数あった場合は、困ってしまいますよね。
そこで、「表示したいファイル名をCGIの内部に記述せず、それを外部から与えてやってCGIの処理を変更する」方法です。
CGIを呼び出す際に変数を付加して実行します。
CGIは「その変数を受け取って実行する」というように作成しておけば自由度の高いCGIに変身します。
では、その方法を説明します。
■ パラメータを取得する方法
CGIでパラメータを取得するには次のように記述します。
$param = @ARGV[0];
どうです、簡単でしょう。
では、「7.テキストの一括表示」で作成したファイル表示のCGIをさっそく変更しましょう。
前回のCGIを次のように変更し、新しく「filedsp1.cgi」と名前を付けて保存します。
- 【記述サンプル】
- #!/usr/bin/perl $param = @ARGV[0]; print "Content-type:text/html\n\n"; open(FILE, "<$param"); while(<FILE>){ print; } close(FILE);
変更点は、2箇所です。
3行目のようにパラメータ取得を追加します。
5行目のファイル名の記述を、取得した変数に書き換えます。
以上です。
次に、パラメータを付加してCGIを呼び出す方法は、次のようにします。
filedsp1.cgi?testhtm.dat
わかりますか?
CGIの名前の後に「?」を付けて、さらに送りたいパラメータを記述するのです。
それでは、今までと同じように実行テストをしてみて下さい。
どうですか?前回と同じように表示されていますか?
次は、そのCGIで以前作成した「cgitest.cgi」を表示してみて下さい。
表示方法は次のとおり。
filedsp1.cgi?cgitest.cgi
どうですか?
全ての行が1行に表示されてしまいましたね。
これは、このCGIの3行目の
print "Content-type:text/html\n\n";
がHTML形式になっているからなのです。
この行を次のようにテキスト形式に変更しましょう。
print "Content-type:text/plain\n\n";
そして、今度は「filedsp2.cgi」という名前で保存してください。
同様に次のように実行してみて下さい。
filedsp2.cgi?cgitest.cgi
今度は、思うとおり表示されましたね。
この方法はHTML形式のファイルも正常に表示してくれるのでどちらにも使用できます。
このCGIなら、この1本でどんなファイルも表示できますので便利です。
■ iswebでテストされてる方へ
iswebでは、そのページに広告が無条件で表示されます。
この広告のためか、上記サンプルの
print "Content-type:text/plain\n\n";
の行が無視されます。
したがって、text/plainでのテストは、次の8行目のように<BR>タグを追記しないと、変更後でも1行で表示されてしまいます。
- 【記述サンプル】
- #!/usr/bin/perl $param = @ARGV[0]; print "Content-type:text/plain\n\n"; open(FILE, "<$param"); while(<FILE>){ print; print "<BR>"; } close(FILE);