Well if it's just a matter of printing a message when foo() returns false, you could just add a print inside sub foo { ... } -- but if it's really "a larger set of things" that are needed on a false return, it might be too much to cram into sub foo { ... } (or maybe you don't have the privelege to muck with what "foo()" does).
In which case, you could try defining a second sub, let's call it "foo_report()", have it do whatever is needed when foo() returns false, and make sure that foo_report() also returns false -- and include it in the grep condition:
@array1 = qw/7 2 5 8 0 10/; @array2 = grep { foo($_) or foo_report($_) } @array1; print join " ","array2 contains:",@array2,$/; sub foo { ( $_[0] / 2 > 1 ) } sub foo_report { print "foo returned false for $_[0]\n"; # do lots of other stuff... 0; # make sure to return false, for grep's sake } __OUTPUT__ foo returned false for 2 foo returned false for 0 array2 contains: 7 5 8 10
In reply to Re: Re: Re: Removing Items from an Array
by graff
in thread Removing Items from an Array
by ibanix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |