Невозможно распечатать после цикла while в Perl

      BEGIN {
   use FindBin;
   $scriptsDir = $FindBin::RealBin;
}

 sub print_log {
  ($log, $msg) = ($_[0], $_[1]);
  print $log $msg;
     }


$opt_rh_gsr = "path_to_file";
open(FO, "$opt_rh_gsr") || die "-F-: Can not open file \n";
while(<FO>) {
  if(/vdd_nets/) {
          $vdd_net = 1;
          $vdd_string = "VDD_NETS \{ \n";
               }
  if(/gnd_nets/) {
          $gnd_net = 1;
 }
     if(($gnd_net == 1)) {
     chomp();
     $new_line = $_;
     @split_new_line = split(":", $new_line);
     }
   if(($gnd_net == 1) && /\}/) {
      $gnd_net = 0;
      $gnd_string .= "\} \n";
      exit;
       }
  if($vdd_net) {
    if(/^\s*\S+\s+\S+\s+{/) {
      $paren++;
    }
    if (0 != $paren && /^\s*(\w+)\s*$/) {
     $vdd_nets{$1} = $parenvolt;
      next;
    }
    if(/^\s*}\s*$/ || /^\s+$/) {
      if (0 == $paren) {
        $vdd_net = 0; next;
      }
      else {
        $paren--;  next;
      }
    }
    chomp();
    if(/\s*\}\s*$/ && ($vdd_net == 1)){
    s/\'//g;
    $vdd_net = 0;
    @_ = split(":");
    $vdd_string .= "$_[0]  $_[1] \n";
    $vdd_string .=  "\} \n";
    next;
    }
      
  if($gnd_net) {
    if(/^\s*\}\s+$/ || /^\s+$/) {
      $gnd_net = 0;
      next;
    }
    #chomp();
    if(/\s*\}\s*$/ && ($gnd_net == 1)){
    s/\'//g;
    $gnd_net = 0;
    }
    @_ = split();
    $GNDNET = $_[0];
    if ($_[0] =~ /^\w+$/) {
      $groundnets{$_[0]} = 1;
     
    }
  }
}
}
print " done reading \n";
close(FO); 

print "closed file \n";

Вышеприведенное не печатает последние 2 оператора печати (до и после закрытия дескриптора файла). Я пробовал печатать STDOUT, это не сработало. Я тоже пробовал прошивать, тоже не помогло.

Сценарий завершается после выполнения, поэтому он нигде не застревает в бесконечном цикле. Я пытаюсь использовать perl5.6 и 5.8, но у обоих одна и та же проблема.

0 ответов

Другие вопросы по тегам