このコードは大丈夫ですか?私は実際にどの正規化形式を使用すべきかについての手がかりを持っていません(私が気付いた唯一のことはNFD
、間違った出力を取得することです)。
#!/usr/local/bin/perl
use warnings;
use 5.014;
use utf8;
binmode STDOUT, ':encoding(utf-8)';
use Unicode::Normalize;
use Unicode::Collate::Locale;
use Unicode::GCString;
my $text = "my taxt täxt";
my %hash;
while ( $text =~ m/(\p{Alphabetic}+(?:'\p{Alphabetic}+)?)/g ) { #'
my $word = $1;
my $NFC_word = NFC( $word );
$hash{$NFC_word}++;
}
my $collator = Unicode::Collate::Locale->new( locale => 'DE' );
for my $word ( $collator->sort( keys %hash ) ) {
my $gcword = Unicode::GCString->new( $word );
printf "%-10.10s : %5d\n", $gcword, $hash{$word};
}