将数组拆分为变量

cap*_*ser 0 arrays variables perl split

在将数组(array[0]- array[6])wal 的字段拆分为perl中的变量时,我很弱

这是一个大的程序结束-结果得到泵入到一个数组,然后以表格的形式通过电子邮件发送-这被抽出的阵列看起来像静态@mailarray下方.表格在电子邮件中被格式化了,它只是抽出相同的行 - 对于数组的每一行.它需要遍历整个数组7个字段到每一行.

mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
Run Code Online (Sandbox Code Playgroud)

程序的结尾如下所示:

#!/usr/bin/perl

@mailarray = qw(mrktsrvr ltick Chicago tkscan100 tmscn Brooklyn OCOMsg2
mrktsrvr ltick Chicago ctdb811 dltic080 Brooklyn OCOMsg2
mrktsrvr ltick Chicago farm101 bhsrv0 Brooklyn OCOMsg2
mrktsrvr ltick Chicago farm102 bhsrv0 Brooklyn OCOMsg2
mrktsrvr ltick Chicago rnds110 nictsrv1 Brooklyn OCOMsg2
mrktsrvr ltick Chicago relay11 tryticUS1 Brooklyn OCOMsg2);
($header_host, $header_process, $header_host_region, $stat_host, $stat_process, $stat_region, $stat_message_type)=@mailarray;
print $header_host;
print "@mailarray\n";
if (@mailarray){
  #open(MAIL,"| /usr/sbin/sendmail -t") || warn "Can't send email\n";
  print  "to:casper\@mail\n";
  print  "from: $header_host\n";
  print  "Subject: ping_stat for $header_host $yyyymmdd\n";
  print  "Content-type: text/html\n\n";
  print  "<html><body><center><b>ping_stat messaging violations for $header_host $yyyymmdd</b>\n";
  print  "<table border=1><tr><td>Process</td><td>Acceptable Regions</td><td>Violation of Region</td><td>Message Type</td></tr>\n";
  foreach (@mailarray){
        ($header_host, $header_process, $header_host_region, $stat_host, $stat_process, $stat_region, $stat_message_type)=@mailarray;
#split(/\s+/, $_);
        print  "<tr><td>$header_process" . ":" . "$header_process</td><td>$header_host_region</td><td>$stat_host" .":". "$stat_process" . "-" . "$stat_region</td><td>$stat_message_type</td></tr>\n";
  }
  print  "</table>\n";
  print  "<br><br>\n";
  print "</table></center></body></html>";
  close ;
}
Run Code Online (Sandbox Code Playgroud)

Tud*_*tin 5

如果我理解正确,你的问题是你不知道如何拆分这些字符串 - 这是这样做的:

use strict;
use warnings;
use Data::Dumper;

my $str = <<END
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
mrktsrvr:ltick Chicago tkscan100:tmscn-Brooklyn OCOMsg2
END
;

foreach my $line ( split( /\n/, $str ) ){
    my @array = split( /\W/, $line);
    print Dumper(\@array);
}
Run Code Online (Sandbox Code Playgroud)