in reply to hash lookup

To elaborate on what moritz hinted at with respect to @list1:  for every iteration (i.e. line in the file), the list gets longer, but you're only ever making effective use of the last entry anyway in what you do with the list:

foreach (@list1){ @temp=split(/\s+/, $_); }

would leave in @temp only the result of splitting the last entry of @list1.  This creates unnecessary work which is only making your program slow...

Here's a simplified version (if I understood correctly what you're trying to do):

# create lookup table while (<FH2>) { chomp; $CVDgenes{$_} = 1; } # go through the other file and check if its entries # are found in the lookup table: while (<FH1>){ chomp; my ($gene, $gid) = split(/\s+/, $_); if (exists $CVDgenes{$gene}) { print "The GID for gene $gene is $gid\n"; } }

Replies are listed 'Best First'.
Re^2: hash lookup
by Anonymous Monk on Oct 12, 2009 at 22:45 UTC
    OK, now I get it, and the code does exactly what I need it to. The insight from both of you is much appreciated.
      That's me above, I forgot to log in.