如何在Perl中避免警告?

Sen*_*mar 1 perl warnings

我有一小段代码用于在这样的文本文件中打印内容,

use strict;
use warnings;

open (FILE, "2.txt") || die "$!\n";

my $var = <FILE>;
while ($var ne "")
{
    print "$var";
    $var = <FILE>;
} 
Run Code Online (Sandbox Code Playgroud)

文字文件是,

line 1
line 2
line 3 
Run Code Online (Sandbox Code Playgroud)

运行代码后,我收到这样的警告,

line 1
line 2
line 3
Use of uninitialized value $var in string ne at del.pl line 10, <FILE> line 3.
Run Code Online (Sandbox Code Playgroud)

如何克服这个警告.

Eug*_*ash 8

从文件中读取的常用习语是:

open my $fh, '<', $file or die $!;

while (defined(my $line = <$fh>)) {
    print $line, "\n";
}
Run Code Online (Sandbox Code Playgroud)

虽然while循环隐式测试是否定义了赋值结果,但为了清楚起见,最好明确地进行测试.

  • 请注意,"while"通常会测试真相,而不是定义.`while($ var = <FILE>)`是一个特殊情况,其中Perl添加了一个隐式的`defined`测试. (5认同)
  • 请不要链接到盗版书籍 (3认同)