在以下示例中,@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] ";
似乎没有存储任何值:(
你在这里使用赋值运算符而不是比较:
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] ";