在以下示例中,@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] ";
似乎没有存储任何值:(
答案 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] ";