$ perl -Mstrict -Mwarnings -E ' open my $wordsFH, q{<}, \ < 0 } <$wordsFH>; my $rxWords = do { local $" = q{ | }; qr{(?x) \b ( @{ [ keys %words ] } ) \b }; }; say qq{Regex is $rxWords}; open my $textFH, q{<}, \ <; }; $words{ $1 } ++ while $text =~ m{$rxWords}g; say qq{$_ => $words{ $_ }} for sort keys %words;' Regex is (?^u:(?x) \b ( dog | cat ) \b ) cat => 2 dog => 1 $