dr_joe has asked for the wisdom of the Perl Monks concerning the following question:
This script I wrote to make two hashes and then search one hash with the keys from the other is only returning the correct result for the last key in the hash being searched. Additionally, it is taking a long time to run. I have reached the limits of my ability in trying to troubleshoot this. Any wisdom received from you will be much appreciated.
#!/usr/bin/perl -w #GIDgiver.pl #this script reads gene symbols and assigns the matching Entrez GeneID + to each gene use strict; open FH1, 'GID_GeneSymbol.txt', or die "Can't open GID file\n"; open FH2, 'CVD_genelist.txt', or die "Can't open CVD gene list\n"; our (@list1, @list2, @temp); my %GID = (); my %CVDgenes = (); while (<FH1>){ chomp; push (@list1, $_); foreach (@list1){ @temp=split(/\s+/, $_); } %GID = map { $temp[0] => $temp[1] } @temp; } while (<FH2>){ chomp; push (@list2, $_); } %CVDgenes = map { $_ => 1 } @list2; while ((my $k, my $v) = each(%GID)) { if (exists ($CVDgenes{$v})){ print "The GID for gene $v is $k\n"; }}
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: hash lookup
by moritz (Cardinal) on Oct 12, 2009 at 21:33 UTC | |
by dr_joe (Initiate) on Oct 12, 2009 at 22:00 UTC | |
by moritz (Cardinal) on Oct 12, 2009 at 22:14 UTC | |
|
Re: hash lookup
by almut (Canon) on Oct 12, 2009 at 22:17 UTC | |
by Anonymous Monk on Oct 12, 2009 at 22:45 UTC | |
by dr_joe (Initiate) on Oct 12, 2009 at 22:47 UTC |