2

嗨我是一个新手 perl 学习者这个简单的 perl 程序

$inputline= <STDIN>;
print "first input";
print( $inputline); 
$inputline=<STDIN>;
print "second input";
print($inputline);
$sum= $inputline+$inputline;
print"sum 1stinput and 2ndinput";
print($sum);

输出

perl count.pl
3
4
first input3
second input4
sum 1stinput and 2ndinput : 8

为什么输出是 8 而不是 7?

4

4 回答 4

8

$inputline因为当它是时你添加到它自己4

如果要对两个输入求和,则要么必须使用两个变量,要么在变量更改之前进行加法。例如:

my $input1 = <>;
my $input2 = <>;
my $sum = $input1 + $input2;
print "Sum: $sum";

或者

my $input = <>;
my $sum = $input;
$input = <>;
$sum += $input;
print "Sum: $sum";

您可以做一些更简单的事情,例如:

perl -nlwe '$sum += $_; print "Sum: $sum";'

这基本上相当于:

use strict;
use warnings; # always use these

my $sum;
while (<>) {  # your input
    $sum += $_;
    print "Sum: $sum\n";
}

使用 Ctrl-C 或 Ctrl-D 跳出循环(Windows 中的 Ctrl-Z)。

于 2012-11-01T18:09:54.360 回答
5

您正在使用变量 $intputline 两次。第二次引用它时,它会覆盖以前的值。您需要为每个变量使用唯一的变量名称:

$inputline1= <STDIN>;
print "first input";
print( $inputline1); 
$inputline2=<STDIN>;
print "second input";
print($inputline2);
$sum= $inputline1+$inputline2;
print"sum 1stinput and 2ndinput";
print($sum);
于 2012-11-01T18:11:02.473 回答
4

Perl(或其他任何人)如何区分 $inputline 和 $inputline?为第二个变量选择不同的名称。

于 2012-11-01T18:10:20.133 回答
1

始终在脚本顶部包含以下编译指示:

use strict;
use warnings;

使用词法范围的变量(“my”):

my $inputline= <STDIN>;
print "first input";
print( $inputline); 
my $inputline=<STDIN>;
...

运行它会引发以下异常:

"my" variable $inputline masks earlier declaration in same scope at ...

使用这些 pragma 和“my”可以帮助您避免脚本中的这个和许多其他潜在问题区域。

希望这可以帮助!

于 2012-11-01T18:20:38.213 回答