Perl readline中的文件结尾
我正在尝试让Perl程序工作。我犯了一个错误Perl readline中的文件结尾,perl,Perl,我正在尝试让Perl程序工作。我犯了一个错误 readline() on closed filehandle IN at Test.pl line 368, <IN> line 65. 因此,配置文件不正确,或者Perl无法识别这是文件的结尾 有办法解决这个问题吗 使现代化 根据这些评论,我添加了open或die命令,得到了以下结果: Test.pl第367行没有这样的文件或目录 open命令是子程序Primer3_运行的一部分 从你透露的情况来看,问题在于这个街区 if ( -e
readline() on closed filehandle IN at Test.pl line 368, <IN> line 65.
因此,配置文件不正确,或者Perl无法识别这是文件的结尾
有办法解决这个问题吗
使现代化
根据这些评论,我添加了open或die命令,得到了以下结果:
Test.pl第367行没有这样的文件或目录
open命令是子程序Primer3_运行的一部分
从你透露的情况来看,问题在于这个街区
if ( -e "$snpid.for" ) { system "del $snpid.for"; }
紧接着就是这个
my $forward = "$snpid.for";
open(IN, $forward) or die $!;
新的或死的美元!可能是根据我的建议,所以之前您删除了$snpid.for,然后试图打开它进行输入。您看到的错误是意料之中的
Test.pl第367行没有这样的文件或目录
你刚刚删除了它
我所能想到的可能会有帮助的是,你的编码要更有条理。当你试图打开一个你刚刚确认不存在的文件时,你是什么意思
除此之外,您必须始终在编写的每个Perl程序的顶部添加use strict和use warnings“all”。将词汇文件句柄与open的三参数形式一起使用,并始终使用die检查每个open调用的状态,包括$的值!解释打开失败的原因。正如错误消息明确指出的,文件内句柄上没有打开的文件。显示文件的内容以及您如何尝试读取它根本没有帮助。请帮助我们减少对代码的限制。您的代码中是否有要关闭的调用?特别是在while循环中。@Dave:文件句柄在某个点被正确打开,到达了第65行!请编辑您的问题以包含其他代码或数据。注释中的代码不可读。@TwanK:如果您希望人们阅读并理解您的代码,请花点时间将其正确格式化。每行开头的>符号是什么?您似乎只向我们展示了子程序的一半。谢谢大家的输入和建议。这是我第一次用perl做一些事情,并通过其他人获得脚本。我删除了包含system del命令的if命令,从而确保不会删除所有内容。但是,错误消息仍然存在。
sub Primer3_Run {
my $snpid = shift;
my $seq = shift;
my $tmp_input = "Primer3.tmp.input";
my $len = length($seq);
open(OUT, ">$tmp_input");
close OUT;
if ( -e "$snpid.for" ) {
system "del
$snpid.for";
}
if ( -e "$snpid.rev" ) {
system "del $snpid.rev";
}
system
"$params{'primer3'}
Primer3.tmp.input
Primer3.Log.txt 2>&1 ";
my $forward = "$snpid.for";
my @forward_out;
my $i = 0;
open(IN, $forward) or die $!;
if ( -e "$snpid.for" ) { system "del $snpid.for"; }
my $forward = "$snpid.for";
open(IN, $forward) or die $!;