Perl中的文件句柄上的UTF-8编码

时间:2010-07-02 21:27:40

标签: perl utf-8 filehandle

我正在将UTF-8编码应用于STDIN和STDOUT。但是,我如何确保将UTF-8编码应用于我传递给下面的代码的文件(<>将从文件而不是STDIN读取,如果在命令行上传递文本文件)尽可能的线条。

use open qw(:std :utf8)

while (<>) {
    print;
}

1 个答案:

答案 0 :(得分:1)

根据open pragma的文档,您已经获得了所需的行为:

  

open pragma作为声明所有I / O的默认“层”(也称为“学科”)的接口之一。在此pragma的词法范围内找到的任何两个参数openreadpipe(aka qx//)和类似运算符将使用声明的默认值。当它们未在MODE中指定IO层时,即使三参数打开也可能受此编译指示的影响。

perlop文档告诉我们while (<>) { ... }等同于

   unshift(@ARGV, '-') unless @ARGV;
   while ($ARGV = shift) {
     open(ARGV, $ARGV);
     while (<ARGV>) {
       ... # code for each line
     }
   }