06/08/18 00:38:01
フォームで受け取ったマルチバイト文字をサーバ上のtxtファイルに書き込み、
重複した場合は警告するというperlプログラムを作ってみたのですが、文字によってエラーが出てしまいます。
やはりエンコードしないとエラーがでてしまうのでしょうか?(質問1)
また、書き込みは正常に行われ表示した場合も正常なのですが、
重複が警告されず何度も書き込んでしまう場合があるのですがどういうことでしょうか?(質問2)
書き込みはopen関数で行っています。重複警告ルーチンは以下の通りです。
open (FH, "kakiko.txt"); #kakiko.txtは書き込むテキストファイル
@sinsei = <FH>;
close(FH);
$sinsei = join ":", @sinsei;
if ($sinsei =~ /$name/) { #$nameはフォームから受け取った文字列
print "Content-type: text/html\n\n";
print "<html><head><title></title></head><body>";
print "<h3>書き込み済みです。\n</h3>";
print "</body></html>";;
}
エンコードされていない文字列同士だと元が同じ文字列でもパターンマッチ演算子が効かないのでしょうか?
サーバはUNIXサーバです。
ご回答のほうよろしくお願い致します。m(_ _)m