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" ) {
##########
}
}
此时将显示一条错误消息:
在test.pl的标量chomp中使用未初始化值$terminer
在test.pl的字符串eq中使用未初始化值$terminer
你能帮帮我吗?
发布于 2018-06-02 08:51:21
当从空尖括号<>
读取时,Perl读取@ARGV
提供的文件(如果有)。但是那里没有文件:它是一个目录名。
您将@ARGV
中的条目复制到$directory
,但也将其保留在@ARGV
中。然后,在代码的更下面,my $terminer = <>
尝试从“文件”(在@ARGV
中作为目录)中读取。
修复方法可以是my $directory = shift @ARGV
,它应该清空@ARGV
,并允许您从代码中的空方括号读取键盘输入。
或者,您可以编写Perl,这样my $terminer= <STDIN>
将只从键盘读取,而不是从@ARGV
数组中列出的文件读取。
发布于 2018-06-02 21:48:12
此外,您还可以执行以下操作:
chomp(my $terminar = <STDIN>);
https://stackoverflow.com/questions/50652378
复制相似问题