首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Perl“使用未初始化值”

Perl“使用未初始化值”
EN

Stack Overflow用户
提问于 2018-06-02 08:14:28
回答 2查看 565关注 0票数 0

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

你能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-02 08:51:21

当从空尖括号<>读取时,Perl读取@ARGV提供的文件(如果有)。但是那里没有文件:它是一个目录名。

您将@ARGV中的条目复制到$directory,但也将其保留在@ARGV中。然后,在代码的更下面,my $terminer = <>尝试从“文件”(在@ARGV中作为目录)中读取。

修复方法可以是my $directory = shift @ARGV,它应该清空@ARGV,并允许您从代码中的空方括号读取键盘输入。

或者,您可以编写Perl,这样my $terminer= <STDIN>将只从键盘读取,而不是从@ARGV数组中列出的文件读取。

票数 6
EN

Stack Overflow用户

发布于 2018-06-02 21:48:12

此外,您还可以执行以下操作:

chomp(my $terminar = <STDIN>);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档