my %jabb = do { open my $fh, '<', '/path/to/jabb.txt' or die $!; map { reverse split; } <$fh>; }; my $re = do { local $" = '|'; qr!\b(@{[map { qr/\Q$_\E/ keys %jabb]})\b!; }; open my $in, '<', '/another/path/to/input.txt' or die $!; open my $out, '>', '/the/path/to/output.txt' or die $!; while (<$in>) { s/$re/$jabb{$1}/g; print $out $_; }