Perl v. 5.8.6, OS X 10.4.7:
#!/usr/bin/perl -w
BEGIN { $^W = 1 }
use strict;
# use open ':utf8';
my $of = "index.txt";
open OF, "> $of"
or die "cannot create `$of': $!";
opendir(DIR, '.') or die 'cannot open : $!';
my @file = readdir(DIR);
closedir(DIR);
for my $file (sort @file) {
printf OF "$file\n";
}
Running this, the file names get written correctly to OF as UTF-8.
But *uncommenting* the line
# use open ':utf8';
gives garbled UTF-8 in the OF.
A fix is to
use Encode;
and then
my @file = map { decode("utf8", $_) } readdir(DIR);
makes things work out OK, even uncommenting the line
use open ':utf8';
But, using decode() shouldn't be necessary, right?