我有一个散列,它应该包含链接到它们自己的数组的某些键。更具体地说,哈希键是质量值,数组是序列名称。如果已经存在该质量的数组,我想将序列名称添加到链接到相关质量的数组中。如果没有,我想创建一个并向其添加序列名称。所有这些都是在 while 循环中完成的,一一遍历所有序列。
我尝试过做类似的事情Perl 如何从数组散列中检索数组? https://stackoverflow.com/questions/12535408/perl-how-do-i-retrieve-an-array-from-a-hash-of-arrays但我似乎无法做对。
我刚刚收到这些错误消息:
标量值 @{hash{$q} 最好在 asdasd.pl 第 69 行写为 ${hash{$q}。
全局符号“@q”需要显式包名称 asdasd.pl 第 58 行。
还有其他一些人。
这是我尝试过的示例:
my %hash;
while (reading the sequences) {
my $q = "the value the sequence has";
my $seq = "the name of the sequence";
if (exists $hash{$q}) {
push (@{$hash{$q}}, $seq);
} else {
$hash{$q} = \@q;
$hash{$q} = [$seq];
next;
}
}
这显然不应该是一个非常复杂的问题,但我是 Perl 新手,这种问题感觉很困难。我从不同的地方用谷歌搜索过这个,但似乎有一些我没有意识到的东西,而且它也可能非常明显。
您可以使用 perl 调用的内容自动活化让这变得很容易。您的代码不需要那个中心 if 语句。您可以将其归结为:
push @{ $hash{$q} }, $seq;
如果散列中尚不存在特定的键,perl 将自动保存它,因为它可以推断出您需要此处的数组引用。
您可以通过谷歌搜索找到有关自动生存的更多资源。这是一个足够独特的词,绝大多数的点击似乎都是相关的。 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)