- 论坛徽章:
- 0
|
本帖最后由 zaiai2014 于 2014-03-20 21:03 编辑
也许是perl版本的问题,您的代码不能正确执行。
我使用的是Ubuntu 12.04 , perl 5.14.2
下面的正确执行:
----------------------------代码-----------------------------------------------
#!/usr/bin/perl
#解决了汉字匹配的问题,原因不太明白。20140320 绥德
use v5.14.2;
use utf8;
#use Encode qw(encode);
use open ":encoding( utf8 )", ":std";
my %hTr = (
收入 => "payin",
门诊收入 => "outp_payin",
住院收入 => "inp_payin",
);
say %hTr;
while(<DATA>){
print $_;
my $cnt = 0;
while(m/(\p{han}+)/g){
say ++$cnt,"=$1\n";
}
s/(\p{han}+)/$hTr{$1}/g;
print "En: $_"
}
my $forum = "收入 = 门诊收入 + 住院收入";
#$forum = encode("UTF-8",$forum);
say $forum;
if ($forum =~ m/(\p{han}+)/g) {
say "matched $1";
}
$forum =~ s/(\p{han}+)/$hTr{$1}/g;
say $forum;
__DATA__
收入 = 门诊收入 + 住院收入
----------------------------代码-----------------------------------------------
运行的结果,
hengaini@hengaini:~/temp/chinese$ perl chinese_replace.pl
住院收入inp_payin门诊收入outp_payin收入payin
收入 = 门诊收入 + 住院收入
1=收入
匹配了!
2=门诊收入
匹配了!
3=住院收入
匹配了!
En: payin = outp_payin + inp_payin
收入 = 门诊收入 + 住院收入
matched 收入
payin = outp_payin + inp_payin
|
|