Perl "Использование неинициализированного значения" - PullRequest
0 голосов
/ 02 июня 2018

Perl-скрипт

my ($directory) = @ARGV; #"www"

if ( not defined $directory ) {
    die "ERROR";
}

if ( defined $directory ) {

    print "Yes or No ? (y/n) : ";
    my $terminer = <>; 
    chomp $terminer;

    if ( $terminer eq "o" ) {       
        print "OK";     
    }
    elsif ( $terminer eq "n" ) {
        ##########
    }
}

Появляется сообщение об ошибке:

Использование неинициализированного значения $ terminer в скалярном chomp в test.pl
Использование неинициализированного значения $ terminerв строке eq at test.pl

Можете ли вы мне помочь?

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Кроме того, вы также можете сделать следующее:

chomp(my $terminar = <STDIN>);
0 голосов
/ 02 июня 2018

При чтении из пустых угловых скобок, <>, Perl читает из файлов, поставляемых в @ARGV, если они есть.Но у вас там не было файла: это было имя каталога.

Вы копируете запись в @ARGV в $directory, но также оставляете ее в @ARGV.Затем, далее в вашем коде, my $terminer = <> пытается прочитать из "файла" (который находится в @ARGV в качестве каталога).

Исправление может быть либо my $directory = shift @ARGV, который должен очистить @ARGV и позволить вам читать ввод с клавиатуры из пустых скобок далее в вашем коде.

Или вы можете написать my $terminer= <STDIN>, так что Perl будет читать только с клавиатуры, а не изфайлы, перечисленные в массиве @ARGV.

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