最初,我正在使用长度 = 2^16 的列表。然而,为了抽象这一点,我将在这个例子中设置长度 = 5。
#subroutine to make undefined entries -> 0
sub zeros {
foreach(@_) {
if(!defined($_)) {
$_ = 0;
}
}
}
#print out and indicies and elements of list
sub checking {
print "List = \n";
my $counter = 0;
foreach (@_) {
print "index = $counter\n";
print "$_\n";
$counter += 1;
}
print "\n";
}
方法 1:如果我访问不同的索引来编辑元素,当我打印出数组时会得到以下信息。我不想看到空白。我希望他们是 0。我已经设置了一个子程序“zeros”来使未定义的条目变为零。但我不知道我的代码出了什么问题。我还为列表的每个元素尝试了“$_ += 0”。我仍然无法为空条目获得零。
#method 1
@abc = ();
$abc[1] = 3;
$abc[5] = 5;
&zeros(@abc);
&checking(@abc);
List =
index = 0
index = 1
3
index = 2
index = 3
index = 4
index = 5
5
方法 2:如果我像这样初始化列表,我可以得到零。但正如我所说,我正在处理很长的列表,我绝对不能像这样初始化我的列表。
#method 2
@abc = (3,0,0,0,5);
&checking(@abc);
List =
index = 0
3
index = 1
0
index = 2
0
index = 3
0
index = 4
5