もともと、長さ= 2 ^ 16のリストを扱っています。ただし、これを抽象化するために、この例では length = 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