#!/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);