Perlについての質問箱 34箱目
■ このスレッドは過去ログ倉庫に格納されています
0653デフォルトの名無しさん
2008/03/18(火) 15:07:28Perlで日本語を扱う際の注意点や対策方法は理解し、特にトラブルなく作成、動作させることはできました。が、突っ込んだ説明を求められ、確信できないところだらけで困ってしまいました。どうか助けてください。
※input.datには、Shift-JISで ソ 1文字だけ入っています。
---------------
$literal = 'ソ\';
open(FILE, "< input");
$from_file = <FILE>;
close(FILE);
print "ファイル:$from_fileンナ〜\n";
print "リテラル:$literalンナ〜\n";
if($literal eq $from_file)
{
print "match\n";
}
--------------
上記ソースで、下記の3行が正しく表示されます。シフトJISでの文字コードに0x5Cが含まれる場合、¥を後ろに付加してエスケープ対策をすればよい、ということは理解できました。が、ファイルから読み込んだ場合は、なぜそのままでよいのでしょうか?
自分なりに考えたのは、Perlの構文解析かなにかがエスケープと間違えて、実行以前にソースが正しく読まれていないのでは?と考えたのですが、出力する際の”$from_fileンナ〜”では、なぜ文字化けしないのか、等が説明できません。
リテラルでは書かない、日本語を正規表現で切り抜かない、この2点さえ守っていれば、カタカナ同士の比較は大丈夫!と言えれば、なんとか納得してもらえそうなのですが・・・。
それから、シフトJISの文字列を「,」でsplitするのは危険でしょうか?
どなたかご教授していただければ幸いです。
何卒よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています