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在你的另一个问题中有一些很好的建议: