Ho un file che si trova in una directory, con caratteri danesi, su una macchina Windows XP. Io uso Strawberry perl e vorrei leggere questo file. Il seguente codice funziona correttamente:Come leggere un file con nome file lungo con unicode in perl Strawberry senza utilizzare Win32 :: Unicode :: File?
use Win32::Unicode::File;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh = Win32::Unicode::File->new;
$fh->open('<', $fname);
La routine getOpenFile proviene da Tk. Ora per qualche ragione Win32 :: Unicode :: File ha alcuni sfortunati effetti collaterali che non posso convivere con (mi mangia la memoria, vedi "Out of memory" with simple Win32::Unicode::File readline loop and Strawberry Perl). Ora se provo ad aprire il file senza l'interfaccia Win32 :: Unicode :: File ottengo un file non trovato. La ragione di ciò è che il percorso viene interpretato erroneamente. Ho provato a convertire il percorso in base a Perl: managing path encodings on Windows che non funziona per qualche motivo. Come dovrei risolvere questo? Ho provato il seguente:
use Encode;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh;
open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));
e non funziona. Qualche idea?
Per favore perdonami se non sono chiaro.
Cordiali saluti, Michael
Alternative: http://p3rl.org/PerlIO::fse http://p3rl.org/Path::Class::Unicode – daxim
methinks è necessario utilizzare UTF16 come codifica. Come appare $ fname nel debugger? –