cgi(perl)にhtmlを読み込ませる方法
1年以上前の記事です。内容が古い可能性があります。
たとえば与えられた変数によって違うページを表示させることを考える。
具体的には、ユーザーページやちょっとした占い等にもつかえそう。
そうでなくてもHTMLをCGIスクリプトの中に読み込ませることは多いはず。
そもそもプログラムをやる人間が知らなかったのも問題だが、そのあたりを調べてみた。
さっそくスクリプトから紹介。
1. $id .= ".html";
2. open(IN,$id);
3. @file = <IN>;
4. close(IN);
5. print "Content-type: text/html\n\n";
6. print "@file";
7. exit;
1. idに「.html」を付けてHTMLファイルと同名にする。
2. ID.html($id=”ID”とする)を開きファイルハンドルINに結びつける。
3. 配列fileにファイルハンドルINを代入
4. ファイルハンドルをクローズする。
5. HTML表示のための下準備
6. HTMLを表示する。
7. プログラムを抜ける。
参考書読んでいたらもうちょい省略できるみたい。
1. $id .= ".html";
2. open(IN,$id);
3. print "Content-type: text/html\n\n";
4. while (<IN>) { print; }
5. close(IN);
6. exit;
ポイントは4行目。
while文とファイルハンドルを使って配列を用意せずにファイルハンドルを直接プリントアウトできるようです。
そこで疑問に思うこと。ファイルハンドルって何?
「print <IN>;」や「print "IN";」「print IN;」じゃ何故ダメなの?
疑問を疑問のままにしておかないのが当ブログのモットーです。
動作確認も含め調べてみると、「print <IN>;」でしっかり動作しています。
(ちなみに「print "IN";」では「IN」と表示されるだけ。「print IN;」では何も表示されません)
いろいろ調べた結果、別に「print <IN>;」でもいいみたいです。
一般的にperlで外部データを読み込む場合、それはデータベースのことがおおく、
したがって配列にファイルハンドルを代入することが多いというのが最初のスクリプトの理由。
while文に関しては標準入力(STDIN)を表示させる場合のスクリプトの名残と、
ファイルハンドルに対してそのまま出力せずに、
様々な命令を付加できるという拡張性を考えて使われていることが多いようです。
つまり、
1. $id .= ".html"; 2. open(IN,$id); 3. print "Content-type: text/html\n\n"; 4. print <IN>; 5. close(IN); 6. exit;
ここまで簡単にできました。
アドセンス広告メイン
関連記事
-
-
コーヒーは百薬の長、でもたくさん飲まないとダメらしい
1年以上前の記事です。内容が古い可能性があります。百薬の長ってのはちょっと言いす …
-
-
PHPプログラムもパーミッションの設定はしたほうが良い(Webプログラム)
1年以上前の記事です。内容が古い可能性があります。ロリポップ及びInterQの簡 …
-
-
ブレスト(ブレーンストーミング)の極意、他人を肯定しつつ自分の意見もしっかりいうための5つのコツ
1年以上前の記事です。内容が古い可能性があります。ブレーンストーミングという言葉 …
-
-
グレースケールの書類を80線で印刷する方法
1年以上前の記事です。内容が古い可能性があります。はて?80線って何のことだっけ …
-
-
「MySoundフル」の解約方法【docomoのスマホ契約後の有料サービス解約手順】
1年以上前の記事です。内容が古い可能性があります。「NotTV」に続いては「My …
-
-
金持ちになる考え方をしても何もしなければ金持ちにはなれない
1年以上前の記事です。内容が古い可能性があります。「金持ちになる考え方、貧乏にな …
-
-
PM-G800等一部のエプソン製プリンタで名刺印刷するときは注意
1年以上前の記事です。内容が古い可能性があります。うちにあるインクジェットプリン …
-
-
ツイッター、メンション(mention)とリプライ(reply)は違う?
1年以上前の記事です。内容が古い可能性があります。こちらの記事の解答編。 □&n …
-
-
kwout対策されているサイトから画像を引用する方法
1年以上前の記事です。内容が古い可能性があります。自分はサイトから画像を引用する …
-
-
#1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
1年以上前の記事です。内容が古い可能性があります。Flashで久しぶりにActi …
- PREV
- ブラウザはSafariもいいかもしれない
- NEXT
- 少年サンデー+少年マガジン=少年ウェンズデイ?







