我是一名自学成才的 Perler,正在寻求 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");
并解决了问题。