在数据批量处理时, 我们经常需要使用grep函数, 来批量处理数组内容。
grep的具体用法如下:
grep EXPR, LIST
grep BLOCK LIST
grep函数针对每个元素, 临时的把$_轮流设置为每个元素, 再根据表达式或者代码块来进行计算, 具体表现非常类似foreach。
grep函数在不同的环境下, 返回值是不同的。
在标量环境下, grep返回表达式为真的次数,比较常用的情景如下:
my @strs = ('hel', 'eeer', 'geehh', 'reddgh');
my $num = grep { /h/ } @strs;
print $num;
当然另一个方式也是一样的效果
my $num = grep /h/, @strs;
这里我们得到所有带字母h的字符串的数量。
在列表环境中, grep函数返回一个列表, 该列表包含所有表达式为真的元素,比如:
my @strs = ('hel', 'eeer', 'geehh', 'reddgh');
my @hstrs = grep /h/, @strs;
print @hstrs;
同样的例子, 同样的表达式, 在列表环境中, 我们得到的就是所有包含h的元素组成的一个列表。
当然我们也可以在过滤的同时, 将h改变成l:
my @hstrs = grep s/h/l/, @strs;
就如我们的例子中的内容, grep在标量环境可以用来统计符合特定要求的元素个数, 在列表环境中, 常用来过滤或者批量修改元素
文章转载自EasyPerl,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




