FASTAファイルの解析中にハッシュの配列を作成するプログラムがあります。これが私のコードです
use strict;
use warnings;
my $docName = "A_gen.txt";
my $alleleCount = 0;
my $flag = 1;
my $tempSequence;
my @tempHeader;
my @arrayOfHashes = ();
my $fastaDoc = open(my $FH, '<', $docName);
my @fileArray = <$FH>;
for (my $i = 0; $i <= $#fileArray; $i++) {
if ($fileArray[$i] =~ m/>/) { # creates a header for the hashes
$flag = 0;
$fileArray[$i] =~ s/>//;
$alleleCount++;
@tempHeader = split / /, $fileArray[$i];
pop(@tempHeader); # removes the pointless bp
for (my $j = 0; $j <= scalar(@tempHeader)-1; $j++) {
print $tempHeader[$j];
if ($j < scalar(@tempHeader)-1) {
print " : "};
if ($j == scalar(@tempHeader) - 1) {
print "\n";
};
}
}
# push(@arrayOfHashes, "$i");
if ($fileArray[$i++] =~ m/>/) { # goes to next line
push(@arrayOfHashes, {
id => $tempHeader[0],
hla => $tempHeader[1],
bpCount => $tempHeader[2],
sequence => $tempSequence
});
print $arrayOfHashes[0]{id};
@tempHeader = ();
$tempSequence = "";
}
$i--; # puts i back to the current line
if ($flag == 1) {
$tempSequence = $tempSequence.$fileArray[$i];
}
}
print $arrayOfHashes[0]{id};
print "\n";
print $alleleCount."\n";
print $#fileArray +1;
私の問題は、
print $ arrayOfHashes [0] {id};
が呼び出されると、次のようなエラーが発生します
fasta_tie.pl行47、行6670の印刷での初期化されていない値の使用。
上記のコードで、私が次のような行をコメントアウトしたことがわかります。
push(@arrayOfHashes、 "$ i");
ハッシュが機能することを確認したかったからです。また、データは目的の形式で正しく印刷されます。このように見えます
HLA:HLA00127:A * 74:01:2918