my @arraydelete = grep { !foo($item) } @array; @array = grep { foo($item) } @array; foreach my $item (@arraydelete ) { # do something when item removed }