Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中避免警告?_Perl_Warnings - Fatal编程技术网

如何在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新手应该避免使用它。