1

我有这两个文件:t.plt

$ file t.pl t
t.pl: UTF-8 Unicode text
t:    UTF-8 Unicode text
$ cat t
日本

t.pl 有三个版本:

情况1

use strict;
use warnings;
use utf8;

$_='日本';
if(/日/){
    print "match!\n";
 }

perl t.pl输出match!

案例2

use strict;
use warnings;
use utf8;

while(<DATA>){
    chomp;
    if(/日/){
        print "match!\n";
    }
}
__DATA__
日本

match!

那么案例3

use strict;
use warnings;
use utf8;

while(<>){
    chomp;
    if(/日/){
        print "match!\n";
    }
}

perl t.pl t不显示match!

那么案例3有什么问题呢?

4

1 回答 1

3

您必须为输入设置编码,而use utf8不是为您这样做。只需插入

use open IN => ":utf8";

在循环之前。有关详细信息,请参阅打开

于 2013-03-26T10:04:35.827 回答