【perl】「入力フォーム→入力データ表示」のプログラムを書いた。
perlってどんな言語?、という状態から2日と半分。頭を悩ませまくり、調べまくってようやく書いた初perlプログラムです。
ちなみに、プロトタイプはこちら↓(これより簡単なものを先に作りました。)
http://d.hatena.ne.jp/midori_kasugano/20090520/1242976726
動作確認できてます。動作環境は以下。
・xampp
・Active Perl
・windows XP
・firefoxとIE(すみません、バージョン忘れました。)
私にとっては記念すべき初プログラムなので、ソースを載せちゃいます。
【1.入力フォーム】forms.html
<html> <head> <title>入力フォーム</title> </head> <body> <form method="post" action="forms.cgi"> <p>メッセージを入力してください</p> <input type="text" name="message" size=20> <p>お名前を入力してください</p> <input type="text" name="name" saze=10> <input type="submit" value="送信"> </form> </body> </html>
【2.入力されたデータを表示させる】forms.cgi
#! usr/bin/perl #送信されたデータを受け取る read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'}); foreach $data (split(/&/,$alldata)){ ($key, $value) = split(/=/,$data); $value = ~s/\+/ /g; $value = ~s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2, $1')/eg; $put{"$key"} = $value; } #ブラウザ表示のためのHTML print "Content-Type: test/html; charset=Shift_JIS\n\n"; print "<html>\n"; print "<head><title>表示画面</title></head>\n"; print "<body>\n"; #受け取ったデータをブラウザに表示させる print "<p>入力されたメッセージは$put{'message'}です。</p>\n"; print "<p>入力されたお名前は$put{'name'}です。</p>\n"; print "</body>\n"; print "</html>\n";
1は問題なくプログラミングできたんです。難産だったのは2。2については、モジュールを使ったりヒアドキュメントを使ったらもっと簡単なんです。
ヒアドキュメントの使用については、全くそこに頭がいきませんでした。モジュールの使用については、どうやってプログラムが動くのかさっぱり理解できなかったので、使用をあきらめました。
百戦錬磨のプログラマーから見ると、ヒアドキュメントやモジュールを使ってない点から、なんとめんどくさいことを、みたいな感じらしいです。(ただ、勉強には良いようです。)
ま、ヒアドキュメントやらモジュールやら2の詳しい説明やらは、また後日。
ちなみに、このプログラム作成で参考にしたものは以下。
(1)perlを知る
- 作者: ラリーウォール,ジョンオーワント,トムクリスチャンセン,Larry Wall,Jon Orwant,Tom Christiansen,近藤嘉雪
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2002/09/01
- メディア: 単行本
- 購入: 8人 クリック: 245回
- この商品を含むブログ (125件) を見る
(2)実際にプログラミング
下の2冊と、ネットでの関数リファレンスと用語辞典の合わせ技で作成。
速効!図解プログラミングPerl/CGI―Windows Perl 5.8対応
- 作者: ハーシー
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2005/08
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (4件) を見る
この本で理解しきれないことは、下の本で検索。辞書的に使用しました。
- 作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/05
- メディア: 単行本
- 購入: 15人 クリック: 474回
- この商品を含むブログ (273件) を見る
以上3冊は発行年度が古いものなので、買うなら新しいものを。