use Data::Dumper; use List::Util qw(first); my @x = ({"aaa" => 100}); [grep { $_->{"aaa"} < 4 } @x]->[0] = 'foo'; (first { $_->{"aaa"} < 4 } @x) = 'foo';