如何在Perl中避免警告?
我有一小段代码,用于在文本文件中打印内容,如下所示如何在Perl中避免警告?,perl,warnings,Perl,Warnings,我有一小段代码,用于在文本文件中打印内容,如下所示 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 Use of uninitialized value $var in string ne at
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
Use of uninitialized value $var in string ne at del.pl line 10, <FILE> line 3.
在运行代码之后,我得到了这样的警告
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
Use of uninitialized value $var in string ne at del.pl line 10, <FILE> line 3.
如何克服此警告。最快的修复方法可能是更换
while ($var ne "")
与
最快的解决办法可能是更换
while ($var ne "")
与
从文件读取的常见习惯用法如下:
open my $fh, '<', $file or die $!;
while (defined(my $line = <$fh>)) {
print $line, "\n";
}
虽然while循环隐式地测试赋值结果是否已定义,但为了清晰起见,最好显式地进行测试。从文件读取的常用习惯用法如下:
open my $fh, '<', $file or die $!;
while (defined(my $line = <$fh>)) {
print $line, "\n";
}
虽然while循环隐式地测试赋值结果是否已定义,但为了清晰起见,最好显式地进行测试。我始终使用:
while(<FILE>) {
print $_;
}
没有这样的问题…我总是使用:
while(<FILE>) {
print $_;
}
没有这样的问题…如果您使用三个参数形式的开放式ie,openmy$fh,那就好了,'如果您使用三个参数形式的开放式ie,openmy$fh,那就好了,'请注意,虽然通常测试的是真实性,但没有定义真实性。而$var=是Perl添加隐式定义测试的特例。请不要链接到盗版书籍。注意,虽然通常测试真理,但不测试定义的真实性。虽然$var=是Perl添加隐式定义测试的一种特殊情况。请不要链接到书籍的盗版副本。这可能会导致bug,因为虽然$var=没有本地化,但我必须承认您是完全正确的。使用这种结构时需要非常小心,即嵌套的while循环无法正常工作。我知道这些问题,我将继续使用这种编码风格,但Perl新手应该避免。这可能会导致错误,因为虽然不能本地化$\u,但我必须承认你是完全正确的。使用这种结构时需要非常小心,即嵌套的while循环无法正常工作。我知道这些问题,我将继续使用这种编码风格,但是Perl新手应该避免使用它。