顧客CSVファイルとアンケートCSVファイルを読み込んで、結果ファイルを出力させる
サンプルプログラム
readCSV.cgi
#!C:/Perl/bin/perl
# 最初に、顧客の住所を全てハッシュ(メモリ上)に取り込む
my %address_datas = ();
open(IN, 'address.csv');
while(<IN>){
chomp;
my ($id, $name, $address) = split(/,/, $_, 3);
# (※1)顧客IDをキーとし、対応する名前と住所の配列を保存する
$address_datas{$id} = [$name, $address];
}
close(IN);
# アンケートデータに氏名と住所をマージする
open(OUT, '>result.csv');
open(IN, 'enquate.csv');
while(my $line = <IN>){
chomp($line);
my ($id, $ans1, $ans2, $ans3) = split(/,/, $line, 4);
# この行にマッチする顧客データを検索する
my $ref_data = $address_datas{$id};
# 配列の0番目に名前、1番目に住所が入っている (※1を参照)
my $name = $ref_data->[0];
my $address = $ref_data->[1];
# 出力する
print OUT join(',', $id, $ans1, $ans2, $ans3, $name, $address), "\n";
}
close(OUT);
close(IN);
print "Content-type: text/html\n\n";
print <<"HERE";
<html lang=ja>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Hello, CGI !</title>
</head>
<body bgcolor="#FFFFCC" text="#000000">
HERE
print " <h2>Successful!!</h2>\n";
print <<"HERE";
</body>
</html>
HERE
exit;
address.csv
0001,マイク,アメリカ3丁目
0002,トム,パリス横丁
0003,メアリー,ドイツ坂
enquate.csv
はい,はい,大きい
いいえ,はい,普通
はい,いいえ,小さい