Perl regexp和utf8字符

时间:2013-03-26 09:59:00

标签: perl

我有这两个文件: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 outpus 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有什么问题?

1 个答案:

答案 0 :(得分:3)

您必须为输入设置编码,use utf8不会为您执行此操作。只需插入

即可
use open IN => ":utf8";
在循环之前

。有关详细信息,请参阅open