私は独学で Perl を学んでおり、Perl の専門家からの支援を求めています。
foreach
ループ内でファイルハンドルを使用できないというエラーが表示され続けますが、確実に使用できますclose
(またはundef
、両方を試しました)。ここで完全なエラーを参照してください。http://cl.ly/image/2b2D1T403s14
コードは GitHub で入手できます: https://github.com/bsima/yeast-TRX
問題のコードは、ファイル「script.pl」の 90 行付近にあります。
foreach my $species (keys %Saccharomyces) {
open(RAW,">./data/$species/$geneName/raw.csv");
print RAW "gene,dinucleotide,position,trx.score,energy.score\n";
undef RAW;
open(SMOOTH,">./data/$species/$geneName/smooth.csv");
print SMOOTH "gene,position,trx.score,energy.score\n";
undef SMOOTH;
}
助けていただければ幸いです。Perl がどのようにファイルハンドルを操作するかの複雑さを知りません。おそらく、正式なトレーニングを受けていないためです。誰かが特に役立つと感じている場合は、私の全体的なコード品質に関するコメントも大歓迎です。
編集:問題が見つかりました。Perl はその場でディレクトリを生成できないため、$species/$geneName
ディレクトリが作成されることさえありませんでした。foreach
ループの先頭にmkdir("$species/$geneName");
、問題を解決する簡単な行を追加しました。