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

标签 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.

最佳答案

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

您需要使用 chomp 函数来删除换行符。您可以通过此 URL http://perldoc.perl.org/functions/chomp.html 找到有关 chomp 的更多信息

您可以通过两种方式应用 chomp。您可以让它在阅读时选择换行

chomp ($calculation = <STDIN>);

或者您可以在作业完成后进行。

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

另外,作为 Perl 的新用户,我建议您除了使用 warning pragma 之外,还应该使用 strict pragma 来帮助您保持良好的可维护代码。

use warnings;
use strict;

关于Perl 脚本没有运行条件语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471588/

相关文章:

Perl:utf8::decode 与 Encode::decode

java - if-else 语句不适用于模型

c - 我想知道当 if(i%2) 它检查什么来继续时会发生什么。它错过了 == 但它打印出的总和为 20?为什么?

java - 在循环内运行一次进程,而无需重复该进程,直到被告知

wpf - 如何在 WPF 中编写条件语句?

ruby - ruby 中有 each_if 吗?

mysql - 脚本仅在一个系统上给出数据库错误

windows - 我怎样才能使批处理文件像使用 Perl 的简单 grep 一样运行?

perl - mkpath File::Path 似乎没有按预期工作

vue.js - VueJs v-for 如何在继续之前检查未定义的列表