[perl5.8] SJISから読み込んだ~と
sjisで書かれたファイルsjis.txtに"~"と一文字だけ
書いて、それをutf8で記述した以下のperlスクリプト
で読込み、文字列マッチングをしたのですが、うまく
いきません。(ちなみにソース中blockB部分を有効に
し、blockAをコメントアウトするとうまくいきます)
#=== match.pl ===============================
#!/usr/bin/perl
use encoding 'utf8';
use open IN => ":encoding(Shift_JIS)";
use open OUT => ":encoding(utf8)";
binmode STDOUT, ":raw:encoding(shiftjis)";
# === blockA ===
open(IN, "<sjis.txt");
@lines = <IN>;
close(IN);
# ==============
# === blockB ===
# $a = "~";
# push(@lines, $a);
# ==============
for(@lines) {
if (/~/) {
print "WAVEDASH発見\n";
}
}
#=============================================
※いわゆるWAVEDASH問題に起因してそうだな、
というのはわかりますが、具体的に何が起きて
いるのかが理解できません。
原因や、どうすればこの問題を解決できるか、
ご存知の方、お知恵をお貸しください。
補足
恐らくそうです。