タブ区切りのファイル abc.txt があります。次のようなデータがあります。
Pytul_T015270 Protein of unknown function
Pytul_T015269 Protein of unknown function
Pytul_T015255 Protein of unknown function
Pytul_T015297 Protein of unknown function
この abc.txt と他の 2 つのファイルを入力として受け取り、パッケージからさまざまなサブルーチンを呼び出してファイルを解析するパーサーを作成しています。utility.pm
解析するサブルーチンabc.txt
は私のパッケージで定義されており、utility.pm
次のようになります。
use strict;
sub readblast{
my $fileName = shift;
my %hash;
my %geneNameHash;
open PRED, $fileName or die "Can't open file $!\n";
while (my $line=<PRED>) {
chomp $line;
#print $line,"\n";
(my $gene,my $desc) = split /\t/, $line;
$hash{$gene} = $desc;
}
close(PRED);
return %hash;
}
そして、ハッシュを使用する私の parser.pl スクリプトは次のとおりです。
my %blast=&utility::readblast($ARGV[2]);
for my $mRNA(keys %{ $featureHash{$scaffold}{$gene}}){
my $desc = $blast{$mRNA};
}
これ$featurehash
は、別のファイルから作成した別のハッシュです。ファイル$mRNA
のキー値を持っていますabc.txt
。
しかし、 $desc の出力は空白で、エラーが発生しています:
Use of uninitialized value $desc in concatenation (.) or string at parser.pl
何が問題でmy $desc = $blast{$mRNA};
、abc.txt の 2 列目を保存しないのはなぜですか?