可以通过以下两种方式调用grep。我正确地错过了一条信息,以了解这种魔力。也许一个好的灵魂可以向我解释grep internal如何获得对该块的引用并进行处理,甚至更好的是我该如何编写一个使用bock表示法的子例程。
1)这是我认为的传统方式。
grep EXPR, list
示例:@foo = grep(!/^#/, @bar);
2)这很不错,但对我来说却很神奇。
grep阻止列表
示例:@foo = grep {!/^#/} @bar;
提前谢谢了。
BR/赫尔曼
最佳答案
sub mygrep (&@) {
my $f = shift;
return map { $f->() ? $_ : () } @_;
}
print join "\n", mygrep { $_%2 } 1..10;
与上述相同,但没有原型(prototype),
sub mygrep {
my $f = shift;
return map { $f->() ? $_ : () } @_;
}
print join "\n", mygrep( sub{ $_%2 }, 1..10 );