my ($fa, $fb) = @ARGV; open IN, $fa or die $!; my %h; while () { my ($str, $rep) = (split)[2,3]; $h{$str} = $rep; } my $pat = join '|', map { quotemeta $_ } keys %h; $pat = qr/\b($pat)\b/; print STDERR "$pat\n"; open IN, $fb or die $!; while () { s/$pat/$1$h{$1}/g; print; }