名前を表す文字列で埋められた 2 つの配列 と@names
があります。は 2 次元であり、無名配列への参照を保持していますが、重要なデータの場所はです。ループして、 にない名前を見つけたい。@employees
@names
@names[i][0]
@names
@employees
最初は、逆方向にループして@names
比較し@employees
、一致するものを削除する@names
とうまくいくと思っていましたが、いくつかのエラーが発生しました。ここに私が持っているものがあります:
for my $i (reverse(0 .. $#names)) {
foreach my $employee (@employees) {
if ($names[$i][0] eq $employee) { # line 67
splice(@names, $i, 1);
}
}
}
このエラーが発生します:
script.pl の 67 行目、2 行目の文字列 eq で初期化されていない値が使用されています。
文字列はすべて配列で定義されています。したがって、これはループ中に配列内の要素を削除したことが原因であると推測していますが、配列を逆方向にループすると、このような問題が発生するのを防ぐことができると思いました。
では、ループのどこで間違っているのでしょうか? また、私はこのループに本当に苦労しており、私の思考プロセス全体に何か問題があることを示唆しています. これを行うためのより良い方法はありますか?