#!/usr/bin/perl
# 2つの CSV ファイルを指定すると,それぞれにしか含まれない
# 学生番号(を含む行)を列挙する。
# 学生番号の表記法は 030e1234 でも 030-E1234 でもよい。
#
# UTF-8 対応 nkf は,
# http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/ で入手。
require "./meibo-cmp-lib.pl";
read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'}); #フォームデータを受け取る
# URLエンコードされたデータをデコード処理 *************************
@part = split('&', $form_data);
foreach $i (@part) {
($variable, $value) = split('=', $i);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
# $value =~ s/\r\n/
/g; $value =~ s/[\r\n]/
/g;
# $value =~ s/
$//g;
$fdata{$variable}=$value;
}
# デコード処理終り ************************************************
print "Content-type: text/plain", "\n\n";
# print "Content-type: text/html\n\n"; #おまじない. (CGIのヘッダを出力)
open FH, "| perl ./limiter.pl > ./file1";
print FH $fdata{'file1'};
close FH;
open FH, "| perl ./limiter.pl > ./file2";
print FH $fdata{'file2'};
close FH;
$file1= "./file1";
$file2= "./file2";
# サブルーチンとのやりとりは,pass by reference なので注意!!
# 配列を引数をして渡してやらないと,後で上書きされてしまう。
(*line1, *linenum1)= gakusei_list($file1, \@line1, \%linenum1);
(*line2, *linenum2)= gakusei_list($file2, \@line2, \%linenum2);
if ($fdata{'fmt'} eq "asis"){
diff_list($file1, \@line1, \%linenum1, \%linenum2);
diff_list($file2, \@line2, \%linenum2, \%linenum1);
}elsif ($fdata{'fmt'} eq "gbangou"){
diff_list2($file1, \@line1, \%linenum1, \%linenum2);
diff_list2($file2, \@line2, \%linenum2, \%linenum1);
}elsif ($fdata{'fmt'} eq "userid"){
diff_list3($file1, \@line1, \%linenum1, \%linenum2);
diff_list3($file2, \@line2, \%linenum2, \%linenum1);
}elsif ($fdata{'fmt'} eq "sorted"){
diff_list4($file1, \@line1, \%linenum1, \%linenum2);
diff_list4($file2, \@line2, \%linenum2, \%linenum1);
}else{
diff_list($file1, \@line1, \%linenum1, \%linenum2);
diff_list($file2, \@line2, \%linenum2, \%linenum1);
}
exit (0);