Just some thoughts... I ran your script as is and I got the following results: C
R S ? Z
R S T U V W X Y Z
The results tell me that the encoding is the special locale C which maps to ASCII,
the ? mark tells you that something is missing. C maps to ASCII, but the Š does not. I would guess that you have to declare the locale, so I tried this:
#!/usr/bin/perl
use strict;
no warnings 'utf8';
use utf8;
use POSIX;
use locale;
print setlocale(LC_CTYPE(), 'et_EE.UTF-8'), "\n\n";
my(@real) = ('R', 'S', 'Š', 'Z');
my(@fake) = ('R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
print "@real\n", "@fake\n";
And the results: et_EE.UTF-8
R S Š Z
R S T U V W X Y Z
I wasn't comfortable with the range operator, so I deleted that. Personally,
I think that it might be a platform-specific problem. |