perl匹配中文问题,请问有什么解决方法?

perl匹配中文问题,请问有什么解决方法?

我想匹配出这样一行文本内容: alarm 2656894445  发生告警   故障告警   1000

但是中文一直未能输出. 中文应该用什么进行匹配处理输出呢???
use encoding ????
中文没有玩过
只是可能需要打开perl的unicode支持?
瞎说的
是不是太简单了 大家都不懒的回答.   偶小菜一个希望各位高手多多指教
#
use Encode;

$dat="测试文本";
$str=decode("gb2312",$dat);

print encode("gb2312",$str),"\n";
#

可以看一下perldoc encode;
读的时候要用decode函数来解码成perl内部的字符
$string = decode(ENCODING, $octets [, CHECK])

输出要用encode函数
$octets = encode(ENCODING, $string [, CHECK])

这里中文的encoding就是gb2312

我试了试,可以匹配啊

#!/usr/bin/perl
use strict;
use warnings;

my $test = 'this is a test: alarm 2656894445  发生告警   故障告警   1000. blalalala';
my $tpl = 'alarm 2656894445  发生告警   故障告警   1000';

print "ok" if $test =~ /$tpl/;
好像。。是可以的说。。

QUOTE:
原帖由 cobrawgl 于 2008-4-16 16:54 发表
我试了试,可以匹配啊

#!/usr/bin/perl
use strict;
use warnings;

my $test = 'this is a test: alarm 2656894445  发生告警   故障告警   1000. blalalala';
my $tpl = 'alarm 2656894445  发生告警 ...

楼上兄弟 我没太理解你的意思  我要做的是从一个log中匹配出这样的一条信息 ???
把你的 log 贴出一部分来,大家研究一下嘛
那可能跟input文件的编码有关了?


QUOTE:
原帖由 wuyue1106 于 2008-4-16 14:46 发表
我想匹配出这样一行文本内容: alarm 2656894445  发生告警   故障告警   1000

但是中文一直未能输出. 中文应该用什么进行匹配处理输出呢???

如果log的编码与perl程序的编码一样..
则直接匹配即可..
例如
$xa =~/发生告警   故障告警/;

如果你是说要把任意中文字给匹配出来..可能你要用unpack先转成16进制..再去查一下..
中文字的编码范围...找出可能的中文字...