【发布时间】:2013-04-16 04:06:50
【问题描述】:
我有一个文件,其中包含以下行,
<tag host="xyz|abc" some info />
<tag host="ijk,cdf" some info />
我正在使用模式匹配获取主机的信息,我想拆分主机的值。出于某种原因,即使看起来正确,以下代码似乎也不适用于逗号。
if($line =~ m/(\s\S)*host=\"(\S+)\"(\s\S)*/)
{
($val) = ($2);
$val=~tr/!$()//ds;
my @values;
if($val =~ m/((\S+)\|(\S+))*/ )
{
@values=split('\|',$val);
}
else
{
@values=split(',',$val);
}
#Perform some action on Values.
}
谁能帮我解决这个问题?提前致谢。
【问题讨论】:
-
你的输入是什么样的?
-
为什么要把它分解成
if-else?为什么不直接用逗号或竖线分割(例如split /[,\|]/,$val;)?