Как я могу избежать предупреждений в Perl? - PullRequest
1 голос
/ 16 сентября 2010

У меня есть небольшой кусочек кода для печати содержимого в текстовом файле, как это,

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.

Как преодолеть это предупреждение.

Ответы [ 3 ]

8 голосов
/ 16 сентября 2010

Обычная идиома для чтения из файла:

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

while (defined(my $line = <$fh>)) {
    print $line, "\n";
}

Хотя цикл while неявно проверяет, определен ли результат присваивания, лучше сделать тест явно для ясности.

3 голосов
/ 16 сентября 2010

Я всегда использую:

while(<FILE>) {
 print $_;
}

Нет таких проблем ...

0 голосов
/ 16 сентября 2010

Самое быстрое решение - заменить

while ($var ne "")

на

while (defined $var)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...