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

Cat*_*ner 2 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] ";
Run Code Online (Sandbox Code Playgroud)

似乎没有存储任何值:(

Rob*_*arl 5

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

if($i=$#DAYS_SINCE_RAIN){
Run Code Online (Sandbox Code Playgroud)

更改===.

除此之外,循环:

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){
Run Code Online (Sandbox Code Playgroud)

将在没有下雨的第一天退出.您可以采取稍微不同的方法,从最后开始并返回:

my $i = $#DAYS_SINCE_RAIN;

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

print "\n day of last rain: $DAYS[$i] ";
Run Code Online (Sandbox Code Playgroud)