Perl, ein Array-Hash: Hinzufügen und Entfernen von Schlüsseln, Hinzufügen zu einem Array, alles in einer while-Schleife

Ich habe einen Hash, der bestimmte Schlüssel enthalten sollte, die mit ihren eigenen Arrays verknüpft sind. Insbesondere sind die Hash-Schlüssel Qualitätswerte und die Arrays Folgenamen. Wenn es bereits ein Array für diese Qualität gibt, möchte ich den Sequenznamen zu dem Array hinzufügen, das mit der fraglichen Qualität verknüpft ist. Wenn es keine gibt, möchte ich eine erstellen und den Sequenznamen hinzufügen. All dies geschieht in einer while-Schleife, in der alle Sequenzen nacheinander durchlaufen werden.

Ich habe versucht, Dinge wie in zu tunPerl Wie rufe ich ein Array aus einem Hash von Arrays ab? aber ich kann es scheinbar nicht richtig machen.

Ich erhalte nur die folgenden Fehlermeldungen: Skalarwert @ {Hash {$ q} besser als $ {Hash {$ q} in Zeile 69 von asdasd.pl geschrieben. Das globale Symbol "@q" erfordert den expliziten Paketnamen asdasd.pl in Zeile 58. Und einige andere auch.

Hier ist ein Beispiel für das, was ich ausprobiert habe:

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;
    }
}

Dies sollte natürlich kein sehr kompliziertes Problem sein, aber ich bin neu in Perl und ein solches Problem fühlt sich schwierig an. Ich habe das von verschiedenen Stellen aus gegoogelt, aber es scheint etwas zu geben, das ich einfach nicht kenne, und es könnte auch wirklich offensichtlich sein.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage