Perl格式:在两个循环中打印报告到文件

时间:2014-05-13 07:24:13

标签: perl

请帮助解决我的问题:

我正在使用perl v5编写简单的报告。

use POSIX qw(strftime);

my $bkpTrigDate = strftime "%m/%d/%Y", localtime;
my $date = strftime "%a %b %e %H:%M:%S %Y", localtime;
$logfile = "./logFormatted";


format STDOUT_TOP = 

@|||||||||||||||||||||||||||||||| @<<<<<<<<<<<<<
"Servers backup triggered at: ",   $bkpTrigDate

 ================================================
|  DB SERVER NAME    |      DB HOSTED ON        |    
+--------------------+--------------------------+
.

format = 
@|||||||||||||||||||| @|||||||||||||||||||||||||| @|||||||||||||||||||||||||| 
$dbSrv,                  $ipName,                  $dbinstance       

@||||||||||||||||||||||||||  @|||||||||||||||||||||||||| 
$start,                     $end
+--------------------+--------------------------+
.


#selecting list of servers for backup
$str = "select 
**********";

   $res0 = $conn->exec($str);
if ($res0->resultStatus>5) { die error("0 query failed: $str")}
while (@row0 = $res0->fetchrow)
{
  if (!$row0[0]) { next;}

  $dbsname = $row0[0];
  $sid = $row0[2];
  $ip = $row0[1];
  $ipName = $ip;
  $dbSrv = $dbsname;

  if (($mylogin{$dbsname}) && ($mypasswd{$dbsname}))
  {

    #my backup
    $dir = $bdir.'mysql/';
    if (!(-d $dir)) { mkdir($dir);}
    $str = "*****";

    $res = $conn->exec($str);
    if ($res->resultStatus>5) { die error("query failed: $str")}
    while (@row = $res->fetchrow)
    {
      $db = $row[0];
      $dbinstance = $db ;
      $start = $date;
     $backup_str = "mysqldump -h $ip --add-drop-table -u ".$mylogin{$dbsname}." -p".$mypasswd{$dbsname}." $db $destination_str";
      $end = $date;
      @my_tmp_strs = get_str($backup_str);
       sleep(2);

    }
  }
  else { $my_output .= "No access data for $dbsname!!!\n";}
  write;
}

我失去了$dbinstance个名字(这并不奇怪!)&gt;当我发出写入时,我的$dbinstance包含$dbinstance的最新值。如何从两个循环写入格式化文件?

1 个答案:

答案 0 :(得分:0)

谢谢!问题解决了!代码中没有任何错误