3

独自の配列にリンクされている特定のキーを含む必要があるハッシュがあります。より具体的には、ハッシュ キーは品質値であり、配列はシーケンス名です。その品質の配列が既にある場合は、問題の品質にリンクされている配列にシーケンス名を追加したいと思います。存在しない場合は、作成してシーケンス名を追加したいと思います。これはすべて while ループで実行され、すべてのシーケンスを 1 つずつ実行します。

Perlのようなことをしようとしました。配列のハッシュから配列を取得するにはどうすればよいですか? しかし、私はそれを正しく理解できないようです。

次のようなエラー メッセージが表示されます: Scalar value @{hash{$q} better written as ${hash{$q} at asdasd.pl line 69. Global symbol "@q" requires explicit package name asdasd.pl line 58. And他にもいくつか。

これが私が試したものの例です:

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 を初めて使用するので、この種の問題は難しく感じます。いろいろなところからググってみたのですが、自分でもわからないところがあり、それも当たり前のことなのかもしれません。

4

2 に答える 2