-1

これに関する他の回答を見てきましたが、なぜこの問題が発生するのかまだわかりません: Use of uninitialized value in pattern match (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++;
               }
              }
            }
        }
}

ありがとうございました!

4

1 に答える 1

3

ループは次のようになります。

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

他にも間違っていることがたくさんありますが、それが出発点です。

$#linesの最後のインデックスを与える@lines一方scalar @lines、 の要素数を与える@lineslength @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++;
           }

警告が表示される場所。

あなたが処理を行っている方法は、より良い用語がないため、風変わりです。

于 2013-08-29T18:35:42.847 に答える