note
Angharad
Thanks very much for all your comments so far. With that in mind, I changed some of my code as follows
<code>
foreach my $key (sort keys %csa_hash)
{
#print "$key\n";
# ok we now need to split up the key in the hash
my $pdb = substr($key, 0, 4);
my $chain = substr($key, 5, 1);
my $res = substr($key, 7, 6);
#print "$pdb $chain $res\n"; # works great. using substring as I dont really want to create an array
my $pdbchain = "$pdb" . "$chain"; # concatenate together so to compare with domain data
# print "$pdbchain\n"; # works fine
# lets be on the safe side and remove white space
# for domchain and pdbchain
$res =~ s/\s//g;
#$domchain =~ s/\s//g;
$pdbchain =~ s/\s//g;
#chomp($domchain);
chomp($pdbchain);
if($dom_hash{$pdbchain}{$res})
{
print "$pdbchain $res\n";
}
}
</code>
And now it runs in seconds. I'm no longer looping over %dom_hash, I'm simply using it as a look up table.
766687
766687