Как мне написать файл, * имя файла * которого содержит символы utf8 в Perl?

Я не могу создать файл, содержащий символы, отличные от ascii.

следующий скрипт работает нормально, если он вызывается с параметром 0 , но умирает при вызове с 1 .

Сообщение об ошибке открыто: недопустимый аргумент в C: \ temp \ filename.pl строка 15.

Сценарий запускается в cmd.exe .

Я ожидаю, что он запишет файл с любым именем (в зависимости от параметра) äöü .txt или äöü☺.txt . Но мне не удается создать имя файла, содержащее смайлик.

use warnings;
use strict;

use Encode 'encode';

#   Text is stored in utf8 within *this* file.
use utf8;

my $with_smiley = $ARGV[0];

my $filename = 'äöü' . 
  ($with_smiley ? '☺' : '' ).
   '.txt';

open (my $fh, '>', encode('cp1252', $filename)) or die "open: $!";

print $fh "Filename: $filename\n";

close $fh;

Я, вероятно, упускаю что-то, что очевидно для других, но я не могу найти, поэтому был бы признателен за любой указатель на решение этой проблемы.

10
задан Alex 27 August 2011 в 03:43
поделиться