X-Git-Url: http://lab.mitty.jp/git/?a=blobdiff_plain;f=misc%2Ffindcombinable.pl;h=8d515d962ac490e3630572d2539e5d51660ae4e1;hb=0e3de6438268c17083907e7410471d9ee497963f;hp=464ecb8ecdd25309599df219d834b0002761e0c2;hpb=68d6d5b003efbd06a48bd9933929cbe463738ee2;p=lab.git diff --git a/misc/findcombinable.pl b/misc/findcombinable.pl index 464ecb8..8d515d9 100755 --- a/misc/findcombinable.pl +++ b/misc/findcombinable.pl @@ -3,24 +3,26 @@ use strict; use warnings; use utf8; -use encoding 'utf-8'; +use Encode; use Unicode::Normalize qw(NFC NFKC); +binmode STDOUT => 'encoding(utf8)'; +binmode STDERR => 'encoding(utf8)'; my $top = shift @ARGV || exit; if (! -d $top) { exit; } +my $utf8 = find_encoding("utf8"); +$top = $utf8->decode($top); + checkdir($top); -sub combinable { +sub match { my $str = shift @_; if ($str ne NFC($str)) { return 1; } - if ($str ne NFKC($str)) { - return 1; - } return ''; } @@ -30,13 +32,13 @@ sub checkdir { 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 =~ /^\.+$/); - if (combinable($entry)) { + $entry = $utf8->decode($entry); + if (match($entry)) { print "'$target/$entry' can be composed\n"; next; }