初心者だけどPerlが大好き

コードが世界を変える!

%params= $q->Vars;   # 全てのパラメータ名取得

パラメータリストのハッシュでの取り出し:
$params = $q->Vars;
print $params->{'address'};
@foo = split("\0",$params->{'foo'});
%params = $q->Vars;

use CGI ':cgi-lib';
$params = Vars;


CGI.pm のフォームの値をファイルに保存して取りだす。
ということを前回したんですが 
%param  ハッシュ を分解するまで至っていませんでした。

ここを参考にしました。みてね。

PERLに関して - タヌキのお散歩 WIKI
use CGI の引数について
http://hanayutori.sakura.ne.jp/cgi-bin/wiki/wiki.cgi?page=PERL%A4%CB%B4%D8%A4%B7%A4%C6

読みましたか???

前回の tofile.cgi  と form.css で データを送ってください。
それを param.cgi で 受け取ります。

#!D:/xampp/perl/bin/perl
use CGI;
use utf8;
$q = new CGI;
print $q->header(-type =>'text/html', -charset =>'utf-8');
print $q->start_html;
print "KEY---hash-------------------";
print $q->br;
my %keys;
%keys= $q->Vars; # 全てのパラメータ名取得(perl5以上)
$ii=0;
foreach (keys %keys){
$keys{$_}=~ s/\0/|/g;
print "($ii)$_ -> $keys{$_}< br>";
$ii++;
}
print $q->hr;
print "KEY---param-------------------";
print $q->br;
$ii=0;
foreach ($q->param()){
my $a=$q->param($_); # パラメータ値取得
$a=~ s/\0/|/g;
$keys{$_}=$a; #//Varsに習って%keysに格納する
print "($ii)$_ [$a]< br>";
$ii++;
}
print $q->end_html;


ここで また makefile.cgi を このようにしてね。

#!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;
#// 後で分割しやすいように日付と%paramsを":"でつなぎます
$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;
while () {
chomp;
my ($mytime, %params) = split(/:/, $_,);
}
print $mytime;
print $q->hr;
foreach (keys %params){
$params{$_}=~ s/\0/|/g;
print "($ii)$_ -> $params{$_}¥n";
$ii++;
}
close(FILE);
print $q->end_html;



ハッシュを分解するなら この方が簡単かも・・・
読みにくいですが 写真のハッシュは : で区切られています

#!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;
#// 後で分割しやすいように日付と%paramsを":"でつなぎます
$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;
while () {
chomp;
my ($mytime, %params) = split(/:/, $_,);
}
print $mytime;
print $q->hr;
$ii=0;
foreach $paramkey(keys %params){
print $paramkey.":". $params{$paramkey};
}
close(FILE);
print $q->end_html;


以下を このようにしても 同じ結果になります
読みにくいですが 写真のハッシュは : で区切られています

#// ファイル読み込み
open(FILE, "<$fname") or die;
while () {
chomp;
my ($mytime, %params) = split(/:/, $_,);
}
print $mytime;
print $q->hr;
while(($key,$val)= each %params)
{print $key.":".$val;}
close(FILE);
print $q->end_html;