in reply to Re^4: Writing UTF8 Filename (Win32)
in thread Writing UTF8 Filename
One problem, even with Win32, is that you can have multiple filesystems on a single system, even within a single tree. Not every filesystem handles filenames the same way. Any solution for Perl would be incomplete without the possibility to override the encoding decision per path.
I'm hoping for a solution that is sufficiently abstracted that all platforms can use it. Win32's implementation would probably be a bit easier than one for, say, Linux, but even if you have to set things explicitly per path, it's better than what we have now. The following is copied from a post to p5p a while ago.
I tend to agree, however pragmas tend to be global, program- or packagewise, and what suits best here is individual, perl-call flag.Global is a problem in most cases, but I feel it would be perfect here, simply because the filesystem is equally global. In fact, it's even longer lived than your Perl program :)
Better yet, global variables can be localized to dynamic scope. This is good, because when you set the encoding for /foo, it should work for encoding-unaware modules too.
Maybe a hash would be nice:
Which then actually does:${^FS_ENCODING}{foo} = 'A'; ${^FS_ENCODING}{foo}{bar} = 'B'; ${^FS_ENCODING}{foo}{bar}{baz}{quux} = 'auto'; open my $fh, ">", "/foo/bar/baz/quux/blah/hello.txt";open my $fh, ">", join("/", "" encode(detect_encoding("/"), "foo"), encode("A", "bar"), encode("B", "baz"), encode("B", "quux"), encode(detect_encoding("/foo/bar/baz/quux"), "blah"), encode(detect_encoding("/foo/bar/baz/quux/blah"), "hello.txt") +, );
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^6: Writing UTF8 Filename (Win32)
by tye (Sage) on Nov 18, 2007 at 00:52 UTC | |
by Juerd (Abbot) on Nov 18, 2007 at 01:13 UTC | |
by tye (Sage) on Nov 18, 2007 at 04:34 UTC | |
by Juerd (Abbot) on Nov 18, 2007 at 19:48 UTC |