On Wednesday, Oct 2, 2002, at 21:51 Asia/Tokyo, Jarkko Hietaniemi wrote:
> However, I will need to stare at your example some more, since
> for simpler cases I think tr/// *is* obeying the 'use encoding':
>
> use encoding 'greek';
> ($a = "\x{3af}bc\x{3af}de") =~ tr/\xdf/a/;
> print $a, "\n";
>
> This does print "abcade\n", and it also works when I replace the \xdf
> with the literal \xdf.

I can explain that.  "\x{3af}bc\x{3af}de" is is a string literal so it 
gets encoded.  however, my example in escaped form is;

   $kana =~ tr/\xA4\xA1-\xA4\xF3/\xA5\xA1-\xA5\xF3/

   which does not get encoded.  the intention was;

   $kana =~ tr/\x{3041}-\x{3093}/\x{30a1}-\x{30f3}/

   That's why

   eval qq{ $kana =~ tr/\xA4\xA1-\xA4\xF3/\xA5\xA1-\xA5\xF3/ }

works because \xA4\xA1-\xA4\xF3 and \xA5\xA1-\xA5\xF3 are converted. to 
\x{3041}-\x{3093} and \x{30a1}-\x{30f3}, respectively.

Dan

Reply via email to