所以我正在编写一些我的编译器真的不喜欢的代码。有两个数组,具有相同数量的索引。 @array
填充0
,按顺序填充@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
。
答案 0 :(得分:4)
比较中的undef
是未初始化的。使用defined
代替与undef
:
elsif($_ == 0 && defined($otherarray[$count-1]))