在Perl中,如何在print语句中使用plus运算符进行算术计算?

前端之家收集整理的这篇文章主要介绍了在Perl中,如何在print语句中使用plus运算符进行算术计算?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下小型Perl(v5.10)程序:

use strict;

my @nums;
my $i = 0;

while ($i < 5) {

    print "Enter number " . $i+1 . ": ";
    $nums[$i] = <STDIN>;
    $i++;
}

foreach (@nums) {

    chomp $_;
    print "$_\t";
}
print "\n";

这是测试运行的结果:

1: 2
1: 1
1: 6
1: 3
1: 2
2   1   6   3   2

正如您所看到的,问题是提示用户输入的print语句未按预期运行.而不是“输入数字1:”或“输入数字3:”,e.t.c.,我得到“1:”.我没想到这是诚实的,因为我知道运算符在Perl中已经被重载用于字符串连接.我该如何解决这个问题?它的原因是什么?

解决方法

没有超载.这是一个优先问题.表达式被解析为

print(((('Enter number ' . $i) + 1) . ': '));

哪个是一样的

print((0 + 1) . ': ');

您可以使用

perl -MO=Deparse,-p -e 'print "Enter number " . $i+1 . ": ";'

了解Perl如何解析脚本.

添加括号可以解决问题.

猜你在找的Perl相关文章