刚开始学习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");
}
答案 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
运算符的内联使用。