【问题标题】:Why do this fail? Perl string comparison [duplicate]为什么会失败? Perl字符串比较[重复]
【发布时间】:2013-11-18 14:10:24
【问题描述】:

我想在我的 pl 脚本中有一个简单的“你想继续”对话框。它看起来像这样:

print "continue? (Y/n)\r\n";
$ans = <>;
if("$ans" eq "n"){
    print "$ans";
    exit 0;
}
print "still here";

如果我写了一个 n 它不会进入 if 语句,为什么?是出口0;退出程序的正确方法?如果我只打印 $ans 变量,它会打印我输入的 n

【问题讨论】:

    标签: perl


    【解决方案1】:

    使用这个:

    chomp $ans;
    

    你应该剥离\n

    演示:

    print "continue? (Y/n)\r\n";
    $ans = <>;
    chomp $ans;
    if("$ans" eq "n"){
        print "$ans";
        exit 0;
    }
    print "still here";
    

    【讨论】:

    • if((chomp $ans) eq "n"){ print "$ans";退出0; } 这仍然打印“仍然在这里”:/ 并且没有 n
    • chomp 返回的不是修改过的字符串。见doc
    • @TheDMerged chomp $ans 不返回修改后的 $ans,您需要在单独的表达式中调用它,然后比较 $ans。
    • @TheDMerged:您应该在脚本中添加“使用警告”和“使用严格”。如果您这样做,您将看到“无法修改 chomp 中的字符串...”。如果你想缩短它,你可以写chomp( my $ans = &lt;&gt; );
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2011-04-04
    • 2017-09-25
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多