Perl, Um hash de arrays: adicionando e removendo chaves, adicionando a um array, tudo em um loop while

Eu tenho um hash que deve conter certas chaves que estão ligadas às suas próprias matrizes. Para ser mais específico, as chaves hash são valores de qualidade e as matrizes são nomes de sequência. Se já houver uma matriz para essa qualidade, desejo adicionar o nome da sequência à matriz vinculada à qualidade em questão. Se não houver, eu quero criar um e adicionar o nome da sequência a ele. Tudo isso é feito em um loop while, passando por todas as seqüências, uma por uma.

Eu tentei fazer coisas como emPerl Como faço para recuperar uma matriz de um hash de matrizes? mas não consigo acertar.

Acabei de receber essas mensagens de erro: Valor escalar @ {hash {$ q} melhor escrito como $ {hash {$ q} na linha asdasd.pl 69. Símbolo global "@ q" requer nome do pacote explícito asdasd.pl linha 58. E alguns outros também.

Aqui está um exemplo do que eu tentei:

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

Isso obviamente não deve ser um problema muito complicado, mas eu sou novo no perl e esse tipo de problema parece difícil. Eu pesquisei isso em vários lugares, mas parece que há algo que eu simplesmente não percebo, e pode ser muito óbvio também.

questionAnswers(2)

yourAnswerToTheQuestion