Как удалить предупреждение "Большой символ в печати"?
У меня есть это предупреждение каждый раз, когда я запускаю свой CGI- script (вывод визуализируется с помощью Template:: Toolkit):
Wide character in print at /usr/local/lib/perl5/site_perl/5.8.9/mach/Template.pm line 163.
Какой правильный способ его устранить?
Я создаю объект tt с помощью этого config:
my %config = (
ENCODING => 'utf8',
INCLUDE_PATH => $ENV{TEMPLATES_DIR},
EVAL_PERL => 1,
}
my $tt = Template->new(\%config);
Ответы
Ответ 1
Поместите это перед вызовом $tt->process()
, чтобы автоматически вывести вывод:
binmode STDOUT, ':utf8';
Изменить. Как упоминалось daxim, можно использовать средства кодирования TT:
$tt->process($infile, $vars, '-', { binmode => ':utf8' })
Это зависит от широко используемого соглашения о том, что имя файла '-'
дает вам STDIN
, когда оно открывается для чтения, и STDOUT
, когда оно открывается для записи.
Изменить 2: BTW, последний способ, похоже, не работает для меня в mod_perl (2.0.5).
Ответ 2
$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.