У меня есть это предупреждение каждый раз, когда я выполняю свой сценарий CGI (вывод представляется Шаблоном:: Инструментарий):
Wide character in print at /usr/local/lib/perl5/site_perl/5.8.9/mach/Template.pm line 163.
Что правильный путь состоит в том, чтобы устранить его?
Я создаю объект tt, использующий эту конфигурацию:
my %config = (
ENCODING => 'utf8',
INCLUDE_PATH => $ENV{TEMPLATES_DIR},
EVAL_PERL => 1,
}
my $tt = Template->new(\%config);
Поместите это перед вызовом $ tt-> process ()
для автоматического кодирования вывода:
binmode STDOUT, ':utf8';
Изменить : Как daxim , можно использовать средства кодирования TT:
$tt->process($infile, $vars, '-', { binmode => ':utf8' })
Это основано на широко используемом соглашении, согласно которому имя файла '-'
дает вам STDIN
, когда он открыт для чтение и STDOUT
, когда он открыт для записи.
Edit 2 : Кстати, последний способ, похоже, не работает для меня с mod_perl (2.0.5).
$tt->process($infile, $vars, $outfile, { binmode => ':encoding(UTF-8)' })
Это описано в http://search.cpan.org/perldoc?Template#process%28%24template%2C_%5C%25vars%2C_%24output% 2C_% 25options% 29 .