如何解决警告消息在./test.pl第17行使用数字lt(<)中的未初始化值

时间:2019-12-04 23:04:04

标签: perl

下面的程序可以正常运行,但是有一个警告提示:

  

在数字lt(<)行17中使用未初始化的值。

如何解决警告?

任何帮助将不胜感激!

    #!/usr/bin/perl 
    use strict;
    use Carp;
    use warnings;


    my @array = (1,3,7,9,7,10,11,12,13,14,15,16,27,10,9,18,19,20,21,22,23,24,9,3,4);
    my $i = 0;
    my $j = 0;
    my $k = 0;
    my $n = $#array+1;
    my $tempj = 0;

    while(1){
     $j=$i;
     while (($array[$i] < $array[$i+1]) && ($i < ($n-1))){
      $i++;
     }
if(( $i - $j) > $k){
        $k = $i-$j;
        $tempj=$j;   
}
if ($i >= ($n-1)){
    print "la position : ",$j," , la langueur: ",$k,"\n";
        exit;
    }

else{
$j=$i;
while ($array[$i]>$array[$i+1] && $i < ($n-1)){
    $i++;
}

if(($i-$j) > $k){
     $k = $i-$j;
     $tempj=$j;

}
if ($i >= ($n-1)){
     print "la position : ",$j," , la langueur",$k,"\n";
     exit;
    }
}

}

提前谢谢

1 个答案:

答案 0 :(得分:0)

更改条件的顺序,以确保对数组的访问不会超出范围。这消除了警告:

while ( ($i < ($n-1)) && ($array[$i] < $array[$i+1]) ) {