in reply to UTF-8 and readdir, etc.

Hello irw005. This is the subrutine I use to read the file names in a directory with unicode names (use Win32::Unicode::Dir)

sub ReadDir{ my $Directory=shift; my @Documents; print "Reading directory's content $Directory\n"; my $wdir = Win32::Unicode::Dir->new; $wdir->open($Directory) || die; for ($wdir->fetch) { next if /^\.{1,2}$/; push (@Documents, $_) } $wdir->close || dieW $wdir->error; return \@Documents; }

Replies are listed 'Best First'.
Re^2: UTF-8 and readdir, etc.
by Anonymous Monk on Jan 31, 2018 at 18:39 UTC
    use Encode::Locale (); use Encode (); opendir my $dh, '/some/dir' or die $!; while ( my $fn = readdir $dh ) { $fn = Encode::decode( locale_fs => $fn ); # $fn is just a filename as char stream (unicode) } closedir $dh;

      also instead of

      opendir my $dh, '/some/dir' or die $!;

      it's better to have

      my $dir = '/some/dir'; # unicode # get it as fs representation my $fs_dir = Encode::encode( locale_fs => $dir ); opendir my $dh, $fs_dir or die $!;