# names.txt 1000:John Smith 2000:Jane Doe 3000:John Doe 4000:George Bush 5000:Saddam Hussein # ids.txt blah blah blah blah -- this line contributed by 1000 foo bar baz etc etc contributed by 4000, my old friend once upon a time thanks to 3000 for his help it was a dark and stormy night, wrote 1000 this line written by both 5000 and 2000 Script: use strict; my ($id,$name,$number,%database); open(NAMES,'names.txt') || die "$!"; while(){ chomp($_); ($id,$name) = split(':',$_); $database{$id} = $name; } close(NAMES); open(IDS,'ids.txt') || die "$!"; open(IDSREPLACED,'>ids-replaced.txt') || die "$!"; while(){ foreach $number (keys(%database)){ $_ =~ s/$number/$database{$number}/g; } print IDSREPLACED $_; } # produces blah blah blah blah -- this line contributed by John Smith foo bar baz etc etc contributed by George Bush, my old friend once upon a time thanks to John Doe for his help it was a dark and stormy night, wrote John Smith this line written by both Saddam Hussein and Jane Doe