Truman Boyes零与一

存档 · 代码

用 Perl 生成 XML

作者:Truman Boyes · · 1 分钟阅读

我现在已经很少写 PERL 代码了;但我想练练能读取 XML 的 Flash 图表,所以决定把一些标准文本交给我的 perl 脚本生成 XML,再喂给这些 Flash 图表。为了做个简单的测试,我运行 pflogsumm.pl,把输出报告保存到文本文件,然后解析报告中的特定细节供脚本使用。

下面是我正在处理的代码片段 …

system("/usr/bin/pflogsumm.pl -u 0 --no_reject_detail -d yesterday /var/log/maillog > email_log.out");

open(EMAIL, "email_log.out");
open(TOP, ">top_out");

undef $/;
while () {
while ( /messages(.*?)Per-Hour/sgm ) {
#print “$1\n”;
print TOP “$1″;
}
}

close(EMAIL);
close(TOP);

$/ =”\n”;
open(TOP, “top_out”);
while () {
if ($_ =~ m/[0-9]\s+ received/) {$receivedStr= $_; print “$receivedStr”;}
if ($_ =~ m/[0-9]\s+ delivered/) {$deliveredStr= $_; print “$deliveredStr”; }
if ($_ =~ m/[0-9]\s+ forwarded/) {$forwardedStr= $_; print “$forwardedStr”;}
}

$receivedStr =~ s/[a-z]+//;
$receivedStr =~ s/^\s+//;
$receivedStr =~ s/\s+$//;
$deliveredStr =~ s/[a-z]+//;
$deliveredStr =~ s/^\s+//;
$deliveredStr =~ s/\s+$//;
$forwardedStr =~ s/[a-z]+//;
$forwardedStr =~ s/^\s+//;
$forwardedStr =~ s/\s+$//;
chomp($receivedStr, $deliveredStr, $forwardedStr);


原始发表在 truman.net。查看存档副本。