post by yamamoto | 0 | 1,048 views

perl memo UTF-8 の置換え問題

perl 5 ( version 12 )を使ってUTF-8を置換えするとき、うまく行けませんでした。

原因はわかりませんが、下記の現象が起こります。

my $content = "阴阳学说 yin-yang theory 中国古代哲学理论范畴。阴阳的对立统一是天地万物运动变化的根本规律。";

$content = ~s/theory/null/g;

print "$content¥n";

【期待した結果】

阴阳学说 yin-yang  中国古代哲学理论范畴。阴阳的对立统一是天地万物运动变化的根本规律。

【実行結果】

18446744073709551615

原因が分かり方はぜひお教えください。

しばらく下記の関数でやっております。

sub ReplaceAll {
    my $string = Encode::decode_utf8(shift);
    my $str1 = Encode::decode_utf8(shift);
    my $str2 = Encode::decode_utf8(shift);

    for (my $i=0 ; $i <= length($string); $i+=length($str1)){
        my $pos=index($string, $str1, $i) ;
        if ( $pos>=0){
            substr($string, $pos, length($str1),$str2);
            $i = 0;
        } else {
            last;
        }
    }
    return Encode::encode_utf8($string);
}
 

Comments are closed.