我正在将UTF-8编码应用于STDIN和STDOUT。但是,我如何确保将UTF-8编码应用于我传递给下面的代码的文件(<>将从文件而不是STDIN读取,如果在命令行上传递文本文件)尽可能的线条。
use open qw(:std :utf8)
while (<>) {
print;
}
答案 0 :(得分:1)
根据open
pragma的文档,您已经获得了所需的行为:
open
pragma作为声明所有I / O的默认“层”(也称为“学科”)的接口之一。在此pragma的词法范围内找到的任何两个参数open
,readpipe
(akaqx//
)和类似运算符将使用声明的默认值。当它们未在MODE中指定IO层时,即使三参数打开也可能受此编译指示的影响。
perlop文档告诉我们while (<>) { ... }
等同于
unshift(@ARGV, '-') unless @ARGV; while ($ARGV = shift) { open(ARGV, $ARGV); while (<ARGV>) { ... # code for each line } }