将输入与字符串进行比较

时间:2012-09-07 23:19:37

标签: string perl input

所以我正在编写一个相对简单的程序,提示用户输入命令,添加,减去等,然后提示输入数字来完成该操作。一切都写好了,它编译得很好,但是当我输入一个命令(加,减等)时,它并没有正确地进行比较。它不是进入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
}`

有谁知道为什么如果我输入添加它会跳过这个?

1 个答案:

答案 0 :(得分:5)

$ command可能仍然附加了新行,因此eq将失败。因为“添加”!=“添加\ n”

您可以考虑只检查命令的第一个字母,例如使用正则表达式

$command =~ /^a/i

或使用chop on $命令删除最后一个字符。

chop($command)