2

タブ区切りのファイル 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 列目を保存しないのはなぜですか?

4

1 に答える 1