my @items = (); foreach my $subset ( keys %lookingFor ) { foreach my $item ( @$subset ) { push @items, $item; } } my $rxMatchItems; { local $" = q{|}; $rxMatchItems = qr{(?:@items)}; } #### while ( <$fh> ) { next unless m{$rxMatchItems}; print $writeFh $_; }