image

NEWEST / < NEXT   BACK >

Perlとバスケと叙々苑


昨日友人Lから「Perlプログラム作ってw」と頼まれました。話を聞くとどうやら数行レベルで作れそうな簡単なものだったので引き受けましたpp_01a

■内容
・企業のHPのサポート情報が載ってるページなどの下部によくある「この情報は役に立ちましたか?」系の情報収集プログラム
・投票してもらってその内容をファイルに書き出していく
・投票後「ありがとうございました」系の結果ページを出力
・報酬は叙々苑pp_11

■流れ
フォームタグがある投票ページ(HTML)
 ↓
今回作成するプログラム(Perl)
 ↓
外部ファイルに書き出し(Perl)
 ↓
「ありがとうございました」ページ(Perl&HTML)


一昔前ならこれを作るだけでも数日かかってましたが・・・今だと数分でできちゃいましたpp_17a成長したなぁpp_05a


せっかくなので、この記事の続きに簡単な説明を書いておきます。興味ある人は作ってみては!?CGI(Perl)なんて思ったより簡単ですよ!

で、この依頼を受ける際に
「週末バスケしない?w」
と誘われたんですが、場所が神奈川で、しかもあんまり現金もなくて・・・さらにはジムで体作ってるときだったので・・・来月参加させてくれとお断りしましたpp_12a
バスケは一時期すごいはまってたなぁ。某漫画の影響で・・・pp_07aこの話を聞いてからすごくバスケがしたくなりました!でももうドリブルもできなくなってるんだろうな・・・レイアップとかもできなそpp_08



■ 設置するHTMLページ
<html><head><title>アンケート</title></head>
<body>
<form method="post" action="vote.cgi">

役に立った?

<input type="radio" name="vote" value="yes" checked>うん
<input type="radio" name="vote" value="no">ちっとも・・・

<input type="submit" value="投票">

</form>
</body></html>


■ log.dat(データ記録用の空ファイル)

■ vote.cgi
#!/usr/bin/perl

###############################
# POST GET データ取得
###############################
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
###############################
# ホスト名を取得
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
$from = $ENV{'HTTP_REFERER'};
###############################
# 現在日時の取得
# 1月から12月までの通常月末
@monthday = ('31','28','31','30','31','30','31','31','30','31','30','31');
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$year2 = $year + 1900;
$mon2 = $mon + 1;
$yyyymmddJ = sprintf("%d年%d月%d日", $year2, $mon2, $mday);
$yyyymmddJ2 = sprintf("%d年%d月%d日", $startyear, $startmon, $startday);
$yobiJ = sprintf("%s", ("日", "月", "火", "水", "木", "金", "土")[$wday]);
$nowtime = sprintf("%d年%.2d月%.2d日%.2d時%.2d分%.2d秒", $year2, $mon2, $mday, $hour, $min, $sec);
###############################

#ヘッダ
print "Content-type: text/html\n\n";

################ここからメイン処理################
#フォームから値を取得
$vote =$FORM{vote};#inputタグのname=""に書かれて送信された値を変数に入れる

#外部ファイルに追記書き出し
#このCGIファイルと同じフォルダ内に、log.datというファイルに書き出す
open(IO,">>./log.dat");
print IO "$nowtime,$vote,$host,$addr,$from,\n";
close(IO);

#ここから投票後のHTML出力
print <<__HTML__;
<html><head><title>ありがとうございました</title></head><body>

投票頂きありがとうございました

投票内容:$vote

</body></html>
__HTML__
#####################ここまで#####################




vote.cgiは実質、「#ここからメイン処理#」の行以下からが処理です。
それより上はとりあえず毎回書いておけばいいよ、みたいな定型文と思っておいてください。
なので実質加えた処理は
・フォームからの値取得
・外部ファイルに書き出し
・HTML出力
だけという非常に簡単なプログラムです。この数行だけで上記の投票プログラムができます。
ちなみに書き出されたファイルはExcelなどで開くことができます。
Perlプログラミングは本当にお手軽ですね!


記事の評価

この記事の評価をお願いします(★1つ=悪い、★5つ=良い)
 この記事の平均評価: 未評価 (0人)

1年前のこの日の記事


| IT関係 | comments (2) | trackback (0) |

コメント

君が好きだーとさけびーたい!

| らるく | 2007.05.27 (Sun) 21:17 | UY6qcCfs |


すらむだーんく

| らるく | 2007.05.27 (Sun) 21:17 | UY6qcCfs |


コメントする




絵文字(クリックすると本文に挿入されます)

トラックバックURL

トラックバックありがとうございます。何らかの形でそちらからもリンクを張って頂けると幸いです。
※宣伝やスパム系は削除しアクセス拒否させて頂きます
http://kazulog.net/tb.php?342

トラックバック


NEWEST / PAGE TOP / < NEXT   BACK >

<< 2018年09月 >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30       

一年前の今日の記事

去年の記事はありません

My ピックアップ記事

みっくみく!
 →愛犬みく(ヨーキー)の写真集
石川県まとめ
 →観光,温泉...石川県のススメ
千葉県での免許更新
 →運転免許センターへの行き方
携帯用着メロの作成方法
 →着メロを自作しよう!
無料アンチウィルスavast!
 →煩わしい有料更新から解放!
プロジェクタの選び方
 →いつか買いたいプロジェクタ
リマインダーメール
 →未来の自分、友人にメール送信
マイ記念日
 →あなたの記念日をメールで通知
Gmail+独自ドメイン設定方法
 →1000円/年でドメインメール

カテゴリ

よく読まれてる記事

最近のコメント

最近のトラックバック

プロフィール

リンク

feedFeedなど

SEARCH

Amazon

Disk Info