语法
grep {BLOCK} @list;
grep EXPR , @list;
功能
遍历@list,对@list中的每个元素调用BLOCK或进行EXPR测试。并返回一个列表,列表中的元素是能够使得BLOCK或EXPR返回true的元素。在标题上下文件中返回的是列表中元素的个数。
注:@list中的每个元素可能会在结果列表中产生0个或一个元素。
grep是通过判断列表中每个元素是否满足正则表达式或者BLOCK块来返回true和false,再根据true和false来决定最终的返回列表。所以grep多时用来过滤元素用的。
例子:删除注释行
my @chars = grep(!/^#/,@code);
my @chars = grep {!/^#/} @code;
注意
- 在BLOCK中$_ 是列表元素的别名,因为可以修改原列表的中元素的值。
- 如果列表中的元素不是变量,而在BLOCK中修改了$_的值,将会产生不可预料的结果。