Chinaunix
标题:
求助,从23个多重哈希里找出一个键在哪个哈希名里面?
[打印本页]
作者:
赛萌
时间:
2015-10-16 19:45
标题:
求助,从23个多重哈希里找出一个键在哪个哈希名里面?
chrY 16984482 16984483 rs3894 0 -
chrY 2876586 2876587 rs3895 0 -
chrY 19448059 19448060 rs3896 0 +
读23个上述格式的文件,把这些文件的第一列,第三列,和第四列读到23个哈希里,如
$chr1{$dbSNP}{$chr}{$position} = 1;
$chr2{$dbSNP}{$chr}{$position} = 1;
需要从23个哈希里找到$dbSNP是rs45对应的$chr,和$position,请问该怎么办?
作者:
MMMIX
时间:
2015-10-16 21:08
回复
1#
赛萌
多重循环即可:
@chr = (\%chr1, \%chr2, ...);
my ($final_idx, $final_dbSNP, $final_chr);
OUTER:
for ($idx = 0; $idx < @chr; ++$idx) {
while (my ($dbSNP, $chrs) = each %{ $chr[$idx] }) {
while (my ($chr, $poss) = each %$chrs) {
for my $pos (keys %$poss) {
if ($pos eq 'rs45') {
$final_idx = $idx;
$final_dbSNP = $dbSNP;
$final_chr = $chr;
last OUTER;
}
}
}
}
}
作者:
104359176
时间:
2015-10-18 21:23
要建立文件名和文件解析生成的哈希的映射表。这样如果找到对应的 key, 就可以返回文件名了。
foreach my ($file_name, $table) (each %file_hash_table) {
if (find_key_in_hash($key, $table)) {
say "find $key in $file_name";
}
}
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2