如何在Perl中绕过foreach循环的范围

时间:2013-09-25 12:59:26

标签: arrays perl variables scope

所以我正在编写一些我的编译器真的不喜欢的代码。有两个数组,具有相同数量的索引。 @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

1 个答案:

答案 0 :(得分:4)

比较中的undef是未初始化的。使用defined代替与undef

进行比较
elsif($_ == 0 && defined($otherarray[$count-1]))