Хотя мой код работает без возникновения фатальной ошибки, результат явно ошибочен. Сначала создаю хэш массивов. Затем я просматриваю последовательности в файле против ключей в хэше. Если последовательность существует как ключ в хеше, я печатаю ключ и связанные значения. Это должно быть достаточно простым, и я правильно создаю хэш массивов. Однако, когда я печатаю связанные значения, я получаю «ARRAY (0x7ff4bbb0c7b8)» на своем месте.Ошибка ARRAY (0x7ff4bbb0c7b8): perl hash массивов
Файл "INFILE" ТАВ delimitated и выглядит, как это, например:
AAAAA AAAAA
BBBBB BBBBB BBBBB
Вот мой код:
use strict;
use warnings;
open(INFILE, '<', '/path/to/file') or die $!;
my $count = 0;
my %hash = (
AAAAA => [ "QWERT", "YUIOP" ],
BBBBB => [ "ASDFG", "HJKL", "ZXCVB" ],
);
while (my $line = <INFILE>){
chomp $line;
my $hash;
my @elements = split "\t", $line;
my $number = grep exists $hash{$_}, @elements;
open my $out, '>', "/path/out/Cluster__Number$._$number.txt" or die $!;
foreach my $sequence(@elements){
if (exists ($hash{$sequence})){
print $out ">$sequence\n$hash{$sequence}\n";
}
else
{
$count++;
print "Key Doesn't Exist ", $count, "\n";
}
}
}
Выходной ток выглядит следующим образом:
>AAAAA
ARRAY(0x7fc52a805ce8)
>AAAAA
ARRAY(0x7fc52a805ce8)
Ожидаемый результат будет выглядеть так:
>AAAAA
QWERT
>AAAAA
YUIOP
Большое спасибо за помощь.
'@ {$ hash {$ sequence}} ' – melpomene