我有一小段代码用于在像这样的文本文件中打印内容,
use strict;
use warnings;
open (FILE, "2.txt") || die "$!\n";
my $var = <FILE>;
while ($var ne "")
{
print "$var";
$var = <FILE>;
}
文本文件是,
line 1
line 2
line 3
运行代码后,我收到这样的警告,
line 1
line 2
line 3
Use of uninitialized value $var in string ne at del.pl line 10, <FILE> line 3.
如何克服此警告。
答案 0 :(得分:8)
从文件中读取的常用习语是:
open my $fh, '<', $file or die $!;
while (defined(my $line = <$fh>)) {
print $line, "\n";
}
虽然while
循环隐式测试是否定义了赋值结果,但为了清楚起见,最好明确地进行测试。
答案 1 :(得分:3)
我总是使用:
while(<FILE>) {
print $_;
}
没有这样的问题......
答案 2 :(得分:0)
最快的修复可能是替换
while ($var ne "")
与
while (defined $var)