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

Perl 在我的while循环中,没有存储值,perl,Perl,在下面的示例中,@DAYS是一个月的天数,@DAYS\u中的条目与@DAYS中的条目相对应,例如,$DAYS\u SINCE\u RAIN[4]是自$DAYS[4]上次下雨以来的天数 在自下雨以来的@DAYS\u中,有雨的一天的值为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

在下面的示例中,
@DAYS
是一个月的天数,
@DAYS\u中的条目与
@DAYS
中的条目相对应,例如,
$DAYS\u SINCE\u RAIN[4]
是自
$DAYS[4]
上次下雨以来的天数

在自下雨以来的
@DAYS\u中,有雨的一天的值为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] ";

自下雨以来的
@DAYS\u
@DAY
来自哪里?复制/粘贴
的输出使用数据::转储程序;打印转储程序\DAYS\u自下雨以来的天数;
使用
$
访问数组元素比使用
更好。
m/0/
将匹配
10
20
,等等。@CathleenTurner-SantillanMerae在你的问题中加入提到的数据是很有帮助的,你不能关闭(注释掉)
使用严格;
使用警告;
。专业的Perl程序员总是使用它们来确保他们不会犯愚蠢的错误。新手程序员也应该这样做。谢谢@robeall,这太棒了。为了确保我理解,我说,1)让我是我将查看的元素总数2),当我大于0(或等于)时,查看从最后一个数据元素开始的降雨数据的天数。如果你找不到,就减去i。找到的第一个,退出循环,打印相应的day元素。@CathleenTurner SantillanMera yep,就是这样。谢谢!您介意我在编写.txt文件时提出改进建议吗?它不工作,我不知道为什么,我不知道如何调试没有perl(可以在matlab上做)@RobEarl@CathleenTurner-SantillanMera在你的另一个问题中有一些很好的建议: