2013-08-29 4 views
-1

나는이에 대한 다른 답변을 보았고, 아직도 내가이 문제를 얻고 이유를 잘 모르겠습니다했습니다 패턴 일치 (m //) 패턴 일치 (m //)에서 초기화되지 않은 값 사용?

my $curr = 0; 
my (@up_intf, @nh_ID); 
my $line = ""; 
for (my $index = 0; $index < length(@lines); $index++) { 
     $line = $lines[$index]; 
     print("The line is: $line"); 
     if (($line =~ /^Group:/i)) { 
      while (1) { 
      if (($line =~ /^Uptime:/i)) { last; } 
      else { 
       $index++; 
       $line = $lines[$index]; 
       if (($line =~ /^Downstream/i)) { 
        $index++; 
        $line = $lines[$index]; 
        print($line); 
        $up_intf[$curr] = $line; 
       } 
       if (($line =~ /^Next-hop/i)) { 
        $nh_ID[$curr] = substr($line, 13, ((length($line) - 13))); 
        print($line); 
        $curr++; 
       } 
       } 
      } 
     } 
} 

이 감사에서 초기화되지 않은 값의 사용!

+3

'$ index

답변

3

루프가 있어야한다 :이 잘못 다른 많은 것들이지만,

for (my $index = 0; $index < $#lines; $index++) { 

그 출발점이다.

$#lines@lines 요소 수를 제공 @linesscalar @lines 반면 마지막 인덱스를 제공한다. length @lines 당신이 생각하는대로하지 않습니다.

루프에서 상대 :

  if (($line =~ /^Downstream/i)) { 
       $index++; 
       $line = $lines[$index]; 
       print($line); 
       $up_intf[$curr] = $line; 
      } 

마지막 줄 /^Downstream/i 일치하는 경우는 어떻게? 그런 다음 $line에 정의되지 않은 값을 할당로 이동 : 당신이 경고를 얻을 것 곳

  if (($line =~ /^Next-hop/i)) { 
       $nh_ID[$curr] = substr($line, 13, ((length($line) - 13))); 
       print($line); 
       $curr++; 
      } 

.

당신이 처리하는 방식은, 더 나은 용어가 부족하기 때문에, 괴상한 것입니다.

+0

더 나은 'for $ i (0 .. $ # lines) {';) – hwnd

+0

로 작성했습니다. 그러나 한 번에 한 가지만 고치고 싶었습니다. –

관련 문제