Looks like you have something goofy going on there. look at the time report at the bottom of this post for my runtime on a 2 proc sun box.
open (CONFIG, "<iaout.txt") || die "Coulnd't open config file!";
my %lookup;
while (<CONFIG>)
{
$lookup{substr($_, 0, 13)} = substr ($_, 13);
}
#script used to generate data in the form of:
# 21 random alpha chars per line
#
#
#use Data::Random qw(:all);
#open IA, ">iaout.txt";
#for $x (1 .. 160000) {
#my @random_chars = rand_chars( set => 'alphanumeric', min => 21, max
+=> 21 );
#print IA @random_chars, "\n";;
#
#}[1:50pm] 161 [/var/tmp]: time perl t
2.95u 0.18s 0:03.30 94.8%
How simular are the key parts of the data in your file? I am wondering if you are getting a very high collision rate on they key for some reason? either that or memory is my best guess.
-Waswas