use strict; use warnings; use Getopt::Long; my @wanted = (); GetOptions(q{want=s}, \@wanted); push @wanted, q{.} unless @wanted; my $rxWanted; { local $" = q{|}; $rxWanted = qr{@wanted}; } ... for my $key ( grep { m{$rxWanted} } keys %$info } { ... }