您的位置:首页 > 其它

perl grep在条件语句中使用遇到的问题

2013-01-08 13:51 288 查看
我们在处理数据时,经常会遇到,在一个列表中过滤出不符合某一条件的内容,并组成新的列表。

比如 @array = ("a", "null", "c", "d");

这时候用grep实现如下:

my @newArray = grep { $_ ne "null"} @array;


但是如果放在条件语句中就会有问题。

@array_tmp = ( "a", "b", "c");
for my $tmp (@array_tmp)
{
if ( grep { $_ ne $tmp } @array ){
print "success";
}  else  {
print "failed";
}
}


最后过滤的结果始终都是failed。

对于这种判断,我们应该在grep 中使用 eq , == 来判断, 然后对结果取反。

@array_tmp = ( "a", "b", "c");
for my $tmp (@array_tmp)
{
if (! grep { $_ eq $tmp } @array ){
print "success";
}  else  {
print "failed";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐