gpt4 book ai didi

arrays - Perl,将数组 : adding and removing keys, 的散列添加到数组中,全部在 while 循环中

转载 作者:行者123 更新时间:2023-12-04 23:46:47 26 4
gpt4 key购买 nike

我有一个散列,它应该包含链接到它们自己的数组的某些键。更具体地说,散列键是质量值,数组是序列名称。如果已经有该质量的数组,我想将序列名称添加到与相关质量相关联的数组中。如果没有,我想创建一个并将序列名称添加到其中。所有这些都是在一个 while 循环中完成的,一个一个地遍历所有序列。

我已经尝试做类似 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 调用的autovivification 来使这变得非常简单。您的代码不需要中央 if 语句。您可以将其归结为:

    push @{ $hash{$q} }, $seq;

如果特定键在散列中还不存在,perl 将自动生成它,因为它可以推断出您需要此处的数组引用。

您可以通过谷歌搜索找到更多关于自动激活的资源。这是一个足够独特的词,绝大多数点击似乎都是相关的。 :-)

关于arrays - Perl,将数组 : adding and removing keys, 的散列添加到数组中,全部在 while 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17571672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com