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" ) {
##########
}
}
出现错误消息:
在test.pl的标量chomp中使用未初始化的值$ terminer 在test.pl
的字符串eq中使用未初始化的值$ terminer
你能帮助我吗?
答案 0 :(得分:6)
当从空尖括号<>
读取时,Perl会从@ARGV
中提供的文件中读取(如果有)。但是那里没有文件:它是一个目录名。
您将@ARGV
中的条目复制到$directory
,但也将其保留在@ARGV
中。然后,在您的代码中,my $terminer = <>
尝试从“文件”(您在@ARGV
中作为目录)读取。
修复可以是my $directory = shift @ARGV
,它应该为空@ARGV
,并让您在代码中进一步从空括号中读取键盘输入。
或者您可以编写my $terminer= <STDIN>
,以便Perl只能从键盘读取,而不能从@ARGV
数组中列出的文件中读取。
答案 1 :(得分:0)
此外,您还可以执行以下操作:
chomp(my $terminar = <STDIN>);