Почему это печатает U
, а не Ü
?Каков правильный способ получить графем?
#!/usr/bin/env perl
use warnings;
use 5.014;
use utf8;
binmode STDOUT, ':utf8';
use charnames qw(:full);
my $string = "\N{LATIN CAPITAL LETTER U}\N{COMBINING DIAERESIS}";
while ($string =~ /(\X)/g) {
say $1;
}
# Output: U
it [works] (http://ideone.com/tw9Qr) on perl 5.12. – jfs
Вам нужно сыграть эти вещи по номерам; не доверяйте тому, что отображается «терминал». Проведите его через [uniquote] (http://training.perl.com/scripts/uniquote), возможно, с '-x' или' -v', и посмотрите, что он действительно делает. Глаза обманывают, а программы еще хуже. Ваша терминальная программа глючит, так и лжет вам. – tchrist