Perl脚本没有运行条件语句?

时间:2013-10-19 21:55:07

标签: perl if-statement conditional user-input

我知道我是Perl的新手所以请原谅我的愚蠢错误。我正在制作一个收集用户输入的计算器,但它无法正常工作。它运行良好和花花公子直到if语句,当它到达if语句它刚刚结束程序。我浏览了论坛和书籍,却找不到任何东西。

use warnings;

print "number\n";
$number = <STDIN>;
# Asks the user for what number to calculate.

print "Second number\n";
$secnumber = <STDIN>;
# Asks the user for second number to calculate the first number with

print "Calculation\n Multiplication  x\n Addition  +\n Substraction  -\n ";
$calculation = <STDIN>;
# Asks the user for which calculation to make.

if ($calculation eq "x") {
    print "$number" . 'x' . "\n$secnumber" . '=' . "\n" . ($number * $secnumber);
} elsif ($calculation eq "+") {
    print "$number" . '+' . "\n$secnumber" . '=' . "\n" . ($number + $secnumber);
} elsif ($calculation eq "-") {
    print "$number" . '-' . "\n$secnumber" . '=' . "\n" . ($number - $secnumber);
}
# Displays the calculation and answer.

2 个答案:

答案 0 :(得分:3)

分配给$calculation的值将包含换行符。因此,在unix类型系统上,分配给$calculation的值实际上是+\n

你需要使用chomp函数来删除换行符。您可以使用此网址http://perldoc.perl.org/functions/chomp.html

找到有关chomp的更多信息

您可以通过两种方式应用chomp。你可以让它在阅读时扼杀新行

chomp ($calculation = <STDIN>);

或者你可以在分配后这样做。

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

另外作为Perl的新用户,我建议使用警告编译指示,你也应该使用strict pragma来帮助你保持良好的可维护代码。

use warnings;
use strict;

答案 1 :(得分:2)

您需要在if stmt之前和初始分配操作之后执行chomp($calculation)。 ($calulation = <STDIN>;)。