3

刚开始学习 Perl,即学习程序流程 - 评估字符串和数字与使用适当的运算符之间的主要显着差异。简单的脚本,我在这里让我发疯,因为它是一个超级简单的 if else 语句,应该在输入“mike”时运行并且不起作用。它改为输出 else 语句。请帮忙

#!C:\strawberry\perl\bin\perl.exe

use strict;
#use warnings;
#use diagnostics;

print("What is your name please?");
$userName = <STDIN>;


if($userName eq "mike"){
    print("correct answer");
}
else{
    print("Wrong answer");
}
4

2 回答 2

11

从 STDIN 获得价值后,尝试添加对 chomp 的调用:

$userName = <STDIN>;
chomp($userName);

因为从 STDIN 读入的值最后会有一个换行符。内置的 chomp() 将从字符串末尾删除换行符。

于 2011-02-03T20:28:27.647 回答
1

当我阅读您的问题时,我以为您将遇到字符串与等号中的数值的问题。考虑以下情况:

#!/usr/bin/env perl

use strict;
use warnings;

print("What is the meaning of life, the universe and everything? ");
chomp(my $response = <STDIN>);

if ( $response == 42) {
#if ( 42 ~~ $response ) {
    print "correct answer\n";
} else {
    print "Wrong answer\n" ;
}

尝试两种不同的if说法。回答一些好话family,看看会发生什么。The~~是智能匹配运算符,它在 Perl 中帮助解决了这个问题。在此处阅读有关它的更多信息(在“详细智能匹配”下)。还要注意运算符的内联使用chomp

于 2011-02-04T01:38:49.723 回答