In Windows there is a common problem: the filenames should be converted to local codepage, before they are passed to open()
. Of course, there is a possibility to use Win32::API
for that, but I don't want my script to be platform-dependent. At the moment I have to write something like:
open IN, "<", encode("cp1251", $filename) or die $!;
but is there any library, that hides these details? I think the local codepage can be automatically detected, so I just want to pass unicode filename and forget about the details. Why is it still not in the box?
It used to just work until 5.8.1, then Jarkko took it out, and broke the
-C
switch in an gratutious incompatible change on top. This makes Windows a second class citizen and annoys me until today, because any other dynamic language does not have this ridiculous defect. Perhaps now is a good time that we could hear a justification for this change for the worse.Anyway, you want
PerlIO::fse
, but it's not a perfect solution, as you will soon discover on your own.