Как читать файл с длинным именем с юникодом в Strawberry perl без использования Win32 :: Unicode :: File?

У меня есть файл, расположенный в каталоге с датскими символами на машине Windows XP. Я использую Strawberry perl и хочу прочитать этот файл. Следующий код работает нормально:

    use Win32::Unicode::File;
    # Some code left out....
    $fname = $mw -> getOpenFile(-filetypes=>$types);
    my $fh = Win32::Unicode::File->new;
    $fh->open('<', $fname);

Подпрограмма getOpenFile происходит от Tk. Теперь по какой-то причине Win32 :: Unicode :: File имеет некоторые нежелательные побочные эффекты, с которыми я не могу жить (он съедает мою память, см. «Недостаточно памяти» с простым циклом Win32 :: Unicode :: File readline и Strawberry Perl ). Теперь, если я попытаюсь открыть файл без интерфейса Win32 :: Unicode :: File, я получаю файл, который не найден. Причина этого в том, что путь интерпретируется неправильно. Я пробовал преобразовать путь в соответствии с Perl: управление кодировками путей в Windows , что по какой-то причине не работает. Как мне решить эту проблему? Я пробовал следующее:

    use Encode;
    # Some code left out....
    $fname = $mw -> getOpenFile(-filetypes=>$types);
    my $fh;
    open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));

, но это не работает. Есть идеи?

Пожалуйста, простите меня, если я не понимаю.

С уважением, Майкл

5
задан Community 23 May 2017 в 11:59
поделиться