use strict; use warnings; my @array = ("joby", "andy", "ben", "tom", "bob"); sub ok {$_ ne 'joby'} print "start\n"; print map {"$_\n"} @array; print "\nmiddle\n"; my $fmt = "%s %s\n"; @array = grep { my $ok = ok(); printf $fmt, $_, $ok? 'ok': 'deleted'; $ok; } @array; print "\nend\n"; print map {"$_\n"} @array;