open(MAP, "<$new_name_map_file"); while () { chomp; tr/A-Z/a-z/; @map_line = split (/\t/); $mapper{$map_line[0]} = $map_line[1]; } close(MAP); my $sub = "sub { "; for my $name (sort keys %mapper) { my $qname = quotemeta $name; my $qrepl = quotemeta $mapper{$name}; $sub .= "s{\b$qname\b}{$qrepl}g; "; } $sub .= "}"; $sub = eval $sub; die if $@; open(IN, "input_file.new"); while () { print "%"; tr/A-Z/a-z/; $sub->(); print OUT "$_"; } close(IN); clse(OUT);