X-Git-Url: http://lab.mitty.jp/git/?a=blobdiff_plain;f=misc%2Ffindcombinable.pl;h=667d6bd1881fe3a4eea4818345d46d81af1fbffa;hb=214dd9dcbcea6edab078f572f790cdfbc497b98d;hp=7b9d629095c060cbb9cf590953981ad8d8f17836;hpb=e4e7407c6608e107411d338d4820da5109a51f66;p=lab.git diff --git a/misc/findcombinable.pl b/misc/findcombinable.pl index 7b9d629..667d6bd 100755 --- a/misc/findcombinable.pl +++ b/misc/findcombinable.pl @@ -5,23 +5,21 @@ use warnings; use utf8; use Encode; -use Unicode::Normalize qw(NFC NFKC); -binmode STDOUT => 'encoding(utf8)'; -binmode STDERR => 'encoding(utf8)'; +use Unicode::Normalize qw(NFC); my $top = shift @ARGV || exit; if (! -d $top) { exit; } my $utf8 = find_encoding("utf8"); -$top = $utf8->decode($top); checkdir($top); sub match { my $str = shift @_; + $str = $utf8->decode($str); if ($str ne NFC($str)) { - return 1; + return $utf8->encode(NFC($str)); } return ''; @@ -30,17 +28,15 @@ sub match { sub checkdir { my $target = shift @_; - print STDERR "checking '$target'\n"; + print STDERR "# checking '$target'\n"; opendir(my $dir, $target) || return $target; - my @entries = sort readdir($dir); + my @entries = sort grep { !m/^(\.|\.\.)$/g } readdir($dir); closedir($dir); my @dirs; while (my $entry = shift @entries) { - next if ($entry =~ /^\.+$/); - $entry = $utf8->decode($entry); - if (match($entry)) { - print "'$target/$entry' can be composed\n"; + if (my $composed = match($entry)) { + print "'$target/$entry' can be composed to '$composed'\n"; next; } if (-d "$target/$entry") {