...take a look at the grep function...
Help me understand how grep will pass only the captures from a regex, as map does in this case.
| [reply] [d/l] [select] |
You are right, grep will not do captures in such a situation. I might not have been clear, but I only mentionned is as an additional useful tool in similar synctactic context, for filtering purpose.
Having said that you can do something akin to captures in a grep, although it is not very clean. Consider this:
DB<1> @a = qw (foobar barfoo foobaz, bar, foobor);
DB<2> @c = grep {s/fo(ob.).+/$1/} @a;
DB<3> x @c
0 'oba'
1 'oba'
2 'obo'
Not clean, I would not really recommend it, but not impossible. | [reply] [d/l] |
>perl -wMstrict -le
"my @a = qw(foobar barfoo foobaz bar foobor);
my @c = grep {s/fo(ob.).+/$1/} @a;
;;
printf qq{'$_' } for @c;
print qq{\n};
printf qq{'$_' } for @a;
"
'oba' 'oba' 'obo'
'oba' 'barfoo' 'oba' 'bar' 'obo'
| [reply] [d/l] [select] |