Кодировка UTF-8 для файлового дескриптора в Perl - PullRequest
1 голос
/ 03 июля 2010

Я применяю кодировку UTF-8 к STDIN и STDOUT.Однако, как мне убедиться, что я применяю кодировку UTF-8 к файлу, который я передаю в мой код ниже (<> будет читать из файла вместо STDIN, если текстовый файл передается в командной строке) в несколько строк, каквозможно.

use open qw(:std :utf8)

while (<>) {
    print;
}

1 Ответ

1 голос
/ 03 июля 2010

Согласно документации open, у вас уже есть поведение, которое вы хотите:

Прагма open служит одним из интерфейсов для объявления «слоев» по ​​умолчанию (также известных как «дисциплины») для всех операций ввода-вывода. Любые операторы с двумя аргументами open, readpipe (он же qx//) и аналогичные операторы, найденные в лексическом контексте этой прагмы, будут использовать объявленные значения по умолчанию. Эта прагма может повлиять даже на три аргумента, когда они не указывают слои ввода-вывода в MODE.

Документация perlop говорит нам, что while (<>) { ... } эквивалентно

   unshift(@ARGV, '-') unless @ARGV;
   while ($ARGV = shift) {
     open(ARGV, $ARGV);
     while (<ARGV>) {
       ... # code for each line
     }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...