my @results = grep { grep { $_ =~ /(?=.*cat)(?=.*dog)/i } values %$_ } @{ $lines }; #### grep { grep /cat/, grep /dog/, values %h } grep { grep /cat/, values %$_ } grep { grep /dog/, values %$_ } @aoh