在我的while循环中没有存储值

时间:2013-09-26 14:05:14

标签: perl

在以下示例中,@DAYS是该月的日期,@DAYS_SINCE_RAIN中的条目对应@DAYS中的条目,例如$DAYS_SINCE_RAIN[4]是自$DAYS[4]上雨以来的天数。

@DAYS_SINCE_RAIN中,有雨的那一天的值为0.我想要出现0的最后一个实例。

#iii. Find the last day of rain in April 2013.
print "#iii. Find the last day of rain in April 2013.\n";
$i=0;
@getday=();

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){
    push @getday, @DAY[$i];
    $i++; 
    if($i=$#DAYS_SINCE_RAIN){
        last;
    }
};

print "@DAYS_SINCE_RAIN";
print "\n day of last rain: @getday[$i] ";

似乎没有存储任何值:(

1 个答案:

答案 0 :(得分:5)

你在使用赋值运算符而不是比较:

if($i=$#DAYS_SINCE_RAIN){

=更改为==

除此之外,循环:

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){

第一天会在没有下雨的情况下退出。你可以采取一种稍微不同的方法,从最后开始并重新开始工作:

my $i = $#DAYS_SINCE_RAIN;

while ($i >= 0) {
    last if $DAYS_SINCE_RAIN[$i] == 0;
    $i--;
}

print "\n day of last rain: $DAYS[$i] ";