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