Perl计算器读入数字不会做计算

时间:2014-03-06 01:43:09

标签: perl

我的简单计算器程序有问题。它没有使用我的if语句执行计算:它直接转到else

#!/usr/bin/perl

print "enter a symbol operation symbol to and two numbers to make a calculation";

chomp($input = <>);

if ($input eq '+') {
  $c = $a + $b;
  print $c;
}
elsif ($input eq '-') {
  $c = $a - $b;
  print $c;
}
elsif ($input eq '*') {
  $c = $a * $b;
  print $c;
}
elsif ($input eq '/') {
  $c = $a / $b;
  print $c;
}
elsif ($input eq '%') {
  $c = $a % $b;
  print $c;
}
elsif ($input eq '**') {
  $c = $a**$b;
  print $c;
}
elsif ($input eq 'root') {
  $c = sqrt($a);
  $c = sqrt($b);
  print $c;
}
else {
  print " you messed up" . "$input" . "$a" . "$b";
}

3 个答案:

答案 0 :(得分:3)

首先,您需要将strictwarnings添加到脚本的顶部

#!/usr/bin/perl
use strict;
use warnings;

这会提醒您注意很多语法错误,并强迫您完全重新思考/重构代码。这是一件好事。

一个显而易见的事情是$a$b从未初始化。并且您的第一个if错过了input之前的美元符号。

我会将变量的捕获更改为以下内容:

print "enter a symbol operation symbol to and two numbers to make a calculation";

chomp(my $input = <>);

my ($operation, $x, $y) = split ' ', $input.

我也不会使用$a$b作为变量名,因为它们是perl排序使用的特殊变量。一旦你确定你正确地获得了你的输入,那么就开始使用其余的逻辑。

答案 1 :(得分:0)

您在input之前的第一个条件中忘记了'$':

if($input eq '+'){
$c = $a + $b;
print $c;

答案 2 :(得分:0)

my $a = shift(@ARGV); // first argument is a
my $b = shift(@ARGV); // second argument is b
my $input = shift(@ARGV); // third argument is an operator
if($input eq '+'){...

另外,除非你精通Perl,否则我建议在顶部使用'use strict'和'use warnings'。