Perl 使用未初始化的值进行加法运算
以下程序的结果给了我一个警告 在加法中使用未初始化的值(+) 为什么未初始化“+”?我怎样才能解决这个问题Perl 使用未初始化的值进行加法运算,perl,warnings,Perl,Warnings,以下程序的结果给了我一个警告 在加法中使用未初始化的值(+) 为什么未初始化“+”?我怎样才能解决这个问题 #/usr/bin/perl -w use List::MoreUtils qw(pairwise); my @result_list=(); my @list1=qw(1 23 321 11 324); my @list2=qw(23 43 46 45 213 435); @result_list=pairwise { $a + $b } @list1,@list2; print "@
#/usr/bin/perl -w
use List::MoreUtils qw(pairwise);
my @result_list=();
my @list1=qw(1 23 321 11 324);
my @list2=qw(23 43 46 45 213 435);
@result_list=pairwise { $a + $b } @list1,@list2;
print "@list1\n@list2\n@result_list\n";
解决方法很简单:不要在不同长度的数组上成对使用
。或者,将缺少的值替换为零:
my @result_list = pairwise { ($a || 0) + ($b || 0) } @list1, @list2;
在Perl 5.10+中,您可以使用“defined or”操作符/
而不是“or”|
修复方法很简单:不要在不同长度的数组上成对使用
。或者,将缺少的值替换为零:
my @result_list = pairwise { ($a || 0) + ($b || 0) } @list1, @list2;
在Perl 5.10+中,您可以使用“defined or”操作符/
而不是“or”|
,尽管在这种情况下,使用/
而不是|
并没有任何好处,因为默认值是0。尽管在这种情况下,使用/
而不是|
实际上没有任何好处,因为默认值为0。