my @array_2 = grep { my $element = $_; $element->func() eq 'TEST' } @array_1; #### my @array_2 = grep { our $element; local *element = \$_; $element->func() eq 'TEST' } @array_1; #### use Data::Alias qw( alias ); my @array_2 = grep { alias my $element = $_; $element->func() eq 'TEST' } @array_1;