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"; } }
In reply to Re: hash lookup
by almut
in thread hash lookup
by dr_joe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |