初心者だけどPerlが大好き

コードが世界を変える!

CGI.pmの単純なフォーム・ベース


川合孝典さん翻訳のCGI - 簡単なCGIクラス
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
の単純なフォーム・ベースのスクリプトの完全な例を簡単にしてみました。

# 画面一杯のフォームを作成し、その値をエコーバックする
# CGIスクリプト

これで たいていのフォームは オーケーですよ
動かしてみてね。改造することで勉強しましょう。

後で呼び出すparam()の中は 各フォームの-name属性になります。

複数は @ 配列になります。'Sparrow locations'は@Sparrowlocations で呼ぶ。
その他は単数なので $ スカラー変数。

#!D:/xampp/perl/bin/perl -w    #Cドライブの人はCにしてね
use CGI;
use utf8;
$q = new CGI;
print $q->header,
$q->start_html("Example CGI.pm Form"),
$q->h1("Example CGI.pm Form"),
$q->start_form,
$q->em("What's your name?"),
$q->textfield('name'),
$q->checkbox('Not my real name'),
$q->p,
$q->em("Where can you find English Sparrows?"),
$q->checkbox_group(-name=>'Sparrow locations',-values=>['England','France','Spain','Asia','Hoboken'],-linebreak=>'yes',-defaults=>['England','Asia']),
$q->p,
$q->em("How far can they fly?"),
$q->radio_group(-name=>'how far',-values=>['10 ft','1 mile','10 miles','real far'],-default=>'1 mile'),
$q->p,
$q->em("What's your favorite color?"),
$q->popup_menu(-name=>'Color',-values=>['black','brown','red','yellow'],-default=>'red'),
$q->hidden('Reference','Monty Python and the Holy Grail'),
$q->p,
$q->em("What have you got there?"),
$q->scrolling_list(-name=>'possessions', -values=>['A Coconut','A Grail','An Icon','A Sword','A Ticket'],-size=>5,-multiple=>'true'),
$q->p,
$q->em("Any parting comments?"),
$q->textarea(-name=>'Comments',-rows=>10,-columns=>50),
$q->p,
$q->reset,
$q->submit('Action','Shout'),
$q->submit('Action','Scream'),
$q->endform;
$q->hr,
$q->h2("Here are the current settings in this form"),
$name =$q->param('name');
@Sparrowlocations =$q->param('Sparrow locations');
$howfar =$q->param('how far');
$color =$q->param('Color');
$possessions =$q->param('possessions');
$Comments =$q->param('Comments');
print $q->h3("Here are the current settings in this form"),
$q->em("$name"),
$q->hr,
$q->em("@Sparrowlocations"),
$q->hr,
$q->em("$howfar"),
$q->hr,
$q->em("$color"),
$q->hr,
$q->em("$possessions"),
$q->hr,
$q->em("$Comments"),
$q->hr,
$q->end_html;