3

所以我正在处理一些我的编译器真的不喜欢的代码。有两个数组,它们具有相同数量的索引。@array0's@otherarray填充,按顺序填充。在这个 foreach 循环中,它会跳过第一个值,因为它是在循环外填充的。Count 在循环外也被声明为 1。

foreach (@array) {
    if ($count == 1) {
    } elsif($_ == 0 && @otherarray[$count-1] != undef) {
        $_ = $count;
        splice(@otherarray, @otherarray[$count - 1], 1);
    } else {
        $_ = $otherarray[ rand @otherarray ];
    }
$count++
}

它坚持我在这一行的数字 ne(!=) 中使用了未初始化的值,以及其他数组在 else/if/elsif 语句中的每一行:

elsif($_ == 0 && @otherarray[$count-1] != undef) 

我该如何解决这个问题?我确信这很明显,但我对 Perl 真的很陌生,所以我可能一开始就设置了错误?我已经声明了我的@otherarray.

4

1 回答 1

4

比较undef中的 未初始化。使用defined而不是比较undef

elsif($_ == 0 && defined($otherarray[$count-1]))
于 2013-09-25T13:11:18.130 回答