フォームからのデータをテキストファイルに収納するの巻
なんで 今頃 こんなことをと思われるかも知れませんが
use CGI;
%params =$q->Vars; というのを やってみたくなったからです
trinity777.txtを作り 以後データを日付とともに足し続けていきます
既存のCGIの使いまわしで シンプルにしましたので
CGI.pmのフォームのファイル添付はファイル名だけが記録されるのみです
tofile.cgi
#!D:/xampp/perl/bin/perl use CGI; use utf8; $q = new CGI; print $q->header(-charset => 'utf-8'), $q->start_html(-title=>"Example CGI.pm Form", -style=>{'src'=>'form.css'}), $q->h1(' Example CGI.pm Form'), $q->start_div({-class=>"aaa"}), $q->p('これは class="aaa" の部分です'), $q->start_multipart_form(-action=>"makefile.cgi"), $q->em("What's your name?"), $q->br, $q->br, $q->textfield('name'), $q->checkbox('Not my real name'), $q->br, $q->em("What's your e-mail?"), $q->br, $q->br, $q->textfield('email'), $q->br, $q->em("What's your subject?"), $q->br, $q->br, $q->textfield('subject'), $q->br, $q->em('Any parting comments?'), $q->br, $q->br, $q->textarea(-name=>'comments',-rows=>3,-columns=>50), $q->br, $q->br, $q->filefield(-name=>'uploaded_file', -default=>'starting value', -size=>50, -maxlength=>80), $q->reset, $q->submit(-name =>'Action', -value =>'送信'), $q->submit(-name =>'Action', -value =>'Scream'), $q->end_multipart_form, $q->end_div, $q->start_div({-id=>"bbb"}), $q->h3('これは id="bbb" の部分です'), $q->end_div, $q->start_div({-class=>"ccc"}), $q->h3('これは class="ccc" の部分です'), $q->end_div, $q->end_html;
いつもの form.css
/* --基本部分の設定-- */
body{background-color:#66ffcc;font-size:20px;line-height:20px}
h1{text-align:center;margin:0 15%;
background-color:#eea8aa;
font-size:20px;
color:#ffffff;
font-style:italic;}
em{font-size:20px;
border-bottom:dashed;
color:#808000;}
#bbb {color:#ff1493;margin:0 15%;line-height:12px;}
.ccc {color:#008000;margin:0 15%;line-height:15px;}
.aaa{border:solid 20px red;margin:2px 15%;padding:0px;line-height:20px;}
#!D:/xampp/perl/bin/perl use CGI; use utf8; $q = new CGI; #// HTML ヘッド出力 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time); $mytime = sprintf("%04d年%d月%d日%02d時%02d分%02d秒", $year + 1900, $mon +1, $mday,$hour, $min, $sec); %params =$q->Vars; $fname = 'trinity777.txt'; #// ファイル書き込み open(FILE, ">>$fname") or die; print FILE 'Perlって楽しいね', "\n"; print FILE $mytime,"\n"; print FILE %params, "\n"; close(FILE); #// ファイル読み込み open(FILE, "<$fname") or die; @rec = <FILE>; close(FILE); #// HTML ヘッド出力をして #// ファイルを読み込み中味をみてみましょう print $q->header(-type =>'text/html', -charset =>'utf-8'); print $q->start_html; #// trinity777.txtファイルの中は改行されています #// 配列@recの要素数はファイルtrinity777.txtの行数と同じになります print @rec; #// 行入力演算子なので 内容を行単位で引っ張り出すことができます #// 1行目の'Perlって楽しいね'を引っ張り出してみましょう print $rec[0]; print $q->end_html;
そして 下記のように $mytime, %params,をくっつけて
ファイルに書き込んでみましょう。
ファイルをオープンしたときに 1行のテーブル表示にできます
#!D:/xampp/perl/bin/perl use CGI; use utf8; $q = new CGI; #// HTML ヘッド出力 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time); $mytime = sprintf("%04d年%d月%d日%02d時%02d分%02d秒", $year + 1900, $mon +1, $mday,$hour, $min, $sec); %params =$q->Vars; $fname = 'trinity777.txt'; #// ファイル書き込み open(FILE, ">>$fname") or die; print FILE $mytime, %params, "\n"; close(FILE); #// HTML ヘッド出力をして #// ファイルを読み込み中味をみてみましょう print $q->header(-type =>'text/html', -charset =>'utf-8'); print $q->start_html; #// ファイル読み込み open(FILE, "<$fname") or die; print "<table border=1 >\n"; foreach $data_line( < FILE > ) { print "<tr><td>" . $data_line . "</td></tr>\n"; } print " </tr>\n"; print " </table>\n"; close(FILE); print $q->end_html;
下記のように $mytime, %params,を ";"でくっつけて
%paramsをデリファレンスしてファイルに書き込んでみましょう。
ファイルをオープンしたときに 別々に分割して表示にできます
#!D:/xampp/perl/bin/perl use CGI; use utf8; $q = new CGI; #// HTML ヘッド出力 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time); $mytime = sprintf("%04d年%d月%d日%02d時%02d分%02d秒", $year + 1900, $mon +1, $mday,$hour, $min, $sec); %params =$q->Vars; #// ハッシュリファレンスにしてファイルに書き込みたと思います #// 後で分割しやすいように日付とリファレンスを":"でつなぎます $ref_params = ¥%params; $fname = 'trinity777.txt'; #// ファイル書き込み open(FILE, ">>$fname") or die; print FILE $mytime,":", $ref_params, "\n"; close(FILE); #// HTML ヘッド出力をして #// ファイルを読み込み中味をみてみましょう print $q->header(-type =>'text/html', -charset =>'utf-8'); print $q->start_html; #// ファイル読み込み open(FILE, "<$fname") or die; while (<FILE>) { chomp; my ($mytime, $ref_params) = split(/:/, $_,); } print $mytime; print $q->hr; print %{$ref_params}; close(FILE); print $q->end_html;