Perl, Hash tablic: dodawanie i usuwanie kluczy, dodawanie do tablicy, wszystko w jednej pętli
Mam hash, który powinien zawierać pewne klucze, które są połączone z ich własnymi tablicami. Mówiąc dokładniej, klucze skrótu są wartościami jakości, a tablice są nazwami sekwencji. Jeśli istnieje już tablica dla tej jakości, chciałbym dodać nazwę sekwencji do tablicy powiązanej z daną jakością. Jeśli nie ma takiego, chcę go utworzyć i dodać do niego nazwę sekwencji. Wszystko to odbywa się w pętli chwilowej, przechodząc kolejno przez wszystkie sekwencje.
Próbowałem robić takie rzeczy jak wPerl Jak pobrać tablicę z tablicy mieszania? ale nie mogę tego zrobić dobrze.
Po prostu dostaję następujące komunikaty o błędach: Wartość skalarna @ {hash {$ q} lepiej zapisana jako $ {hash {$ q} w asdasd.pl wiersz 69. Globalny symbol „@q” wymaga jawnej nazwy pakietu asdasd.pl linia 58. kilka innych też.
Oto przykład tego, co próbowałem:
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;
}
}
To oczywiście nie powinno być bardzo skomplikowanym problemem, ale jestem nowy w perlu i ten problem jest trudny. Wyszukałem to z różnych miejsc, ale wydaje mi się, że jest coś, czego po prostu nie zdaję sobie sprawy, i może to być naprawdę oczywiste.