use Data::Dumper; use List::Util qw(first); my @x = ({"aaa" => 100}); say Dumper([grep { $_->{"aaa"} < 4 } @x]->[0]); say Dumper((first { $_->{"aaa"} < 4 } @x)); #### $VAR1 = undef; $VAR1 = undef; #### say Dumper([grep { $_->{"aaa"} < 4 } @x]->[0]->{"aaa"}); say Dumper((first { $_->{"aaa"} < 4 } @x)->{"aaa"}); #### $VAR1 = undef; Can't use an undefined value as a HASH reference at test.pl line 7.