所以我正在编写一个相对简单的程序,提示用户输入命令,添加,减去等,然后提示输入数字来完成该操作。一切都写好了,它编译得很好,但是当我输入一个命令(加,减等)时,它并没有正确地进行比较。它不是进入if情况的操作分支,而是转到我添加的无效命令catch。以下是包含声明和第一个if语句的代码的一部分。
my $command = <STDIN>;
my $counter = 1;
#perform the add operation if the command is add
if (($command eq 'add') || ($command eq 'a')){
my $numIn = 0;
my $currentNum = 0;
#While NONE is not entered, input numbers.
while ($numIn ne 'NONE'){
if($counter == 1){
print "\nEnter the first number: ";
}else{
print "\nEnter the next number or NONE to be finished.";
}
$numIn = <STDIN>;
$currentNum = $currentNum + $numIn;
$counter++;
}
print "\nThe answer is: #currentNum \n";
#perform the subtract operation if the command is subtract
}`
有谁知道为什么如果我输入添加它会跳过这个?
答案 0 :(得分:5)
$ command可能仍然附加了新行,因此eq将失败。因为“添加”!=“添加\ n”
您可以考虑只检查命令的第一个字母,例如使用正则表达式
$command =~ /^a/i
或使用chop on $命令删除最后一个字符。
chop($command)