我知道以前有人问过这个问题。我确实检查了所有以前的答案,但仍然无法解决我的问题。请原谅我显然重复的问题。
我正在编写一个 perl 程序来处理中文文本文件。我想识别中文文本,但排除所有其他行,例如英语或其他语言和 url。我使用 " use utf8
" 和 " $line =~ /(\p{Han}+)/
" 但它什么也没做。如果我使用“ use utf8
”和“ $line =~ /信息/
”,它什么也不做。如果我不使用“ use utf8
”,“ $line =~ /信息/
”可以工作,但不能“ $line =~ /(\p{Han}+)/
”。我检查文本文件编码:file -bi input.txt,它显示:“ text/plain; charset=utf-8
”。以下是代码:
$|=1;
use strict;
use utf8;
my $in = $ARGV[0];
sub main {
open(IN, "$in") or die "can't open $in\n";
while (my $line=<IN>) {
chomp($line);
if ($line =~ /(\p{Han}+)/ ) {
print "chinese: $line\n";
}
if ($line =~ /信息/) {
print "$line\n";
}
} # end while
close(IN);
}
提前感谢您的任何帮助和建议!