在我的 Perl 脚本中,我有一个双无限 while 循环。我使用菱形运算符从文件中读取行。但不知何故,如果我的脚本到达文件的最后一行,它不会返回 undef,而是永远挂起。
如果我将代码减少到单个 while 循环,则不会发生这种情况。所以我想知道我是否做错了什么,或者这是否是语言的已知限制。(这实际上是我的第一个 perl 脚本。)
下面是我的脚本。它旨在计算 fasta 文件中 DNA 序列的大小,但在任何其他具有多行文本的文件中都可以观察到挂起行为。
Perl 版本 5.18.2
从命令行调用,如perl script.pl file.fa
$l = <>;
while (1) {
$N = 0;
while (1) {
print "Get line";
$l = <>;
print "Got line";
if (not($l)) {
last;
}
if ($l =~ /^>/) {
last;
}
$N += length($l);
}
print $N;
if (not($N)) {
last;
}
}
我放了一些调试打印语句,以便您可以看到打印的最后一行是“Get line”,然后它挂起。