为什么eq不能使用我的字符串输入?

时间:2011-02-03 20:23:44

标签: perl if-statement flow

刚开始学习Perl,即学习程序流程 - 评估字符串和数字以及使用适当的运算符之间的主要差异。简单的脚本,我在这里让我发疯,因为它是一个超级简单的if if语句,应该在“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");
}

2 个答案:

答案 0 :(得分:11)

从STDIN获取值后尝试添加对chomp的调用:

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

由于从STDIN读入的值将在末尾添加换行符。内置的chomp()将从字符串末尾删除换行符。

答案 1 :(得分: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这样的好事,看看会发生什么。 ~~是智能匹配运算符,它帮助了Perl中的一些问题。阅读更多相关信息here(详见“智能匹配”)。另请注意chomp运算符的内联使用。