gnuplot画图;现值班表是execl做的,想法:用perl智能排班,CGI显示

怎么会呢?
我测试结果是

[Copy to clipboard] [ - ]
CODE:
2 ms    267 ms  40 ms   6 ms
Result:  315 ms

还显示了原来的数据

sorry ......
是对的。
谢谢!
谢谢各位!
不过后来我发现,你的这种方法有漏洞。。。
如下情况,匹配方式就不会发现问题,仍会得出结果。。而我的笨法就不会得出结果了。你认为呢?
-bash-2.05b$ dig sina.com.cn +trace

; <<>> DiG 9.3.3 <<>> sina.com.cn +trace
;; global options:  printcmd
.                       119620  IN      NS      H.ROOT-SERVERS.NET.
.                       119620  IN      NS      I.ROOT-SERVERS.NET.
.                       119620  IN      NS      J.ROOT-SERVERS.NET.
.                       119620  IN      NS      K.ROOT-SERVERS.NET.
.                       119620  IN      NS      L.ROOT-SERVERS.NET.
.                       119620  IN      NS      M.ROOT-SERVERS.NET.
.                       119620  IN      NS      A.ROOT-SERVERS.NET.
.                       119620  IN      NS      B.ROOT-SERVERS.NET.
.                       119620  IN      NS      C.ROOT-SERVERS.NET.
.                       119620  IN      NS      D.ROOT-SERVERS.NET.
.                       119620  IN      NS      E.ROOT-SERVERS.NET.
.                       119620  IN      NS      F.ROOT-SERVERS.NET.
.                       119620  IN      NS      G.ROOT-SERVERS.NET.
;; Received 500 bytes from 211.151.88.20#53(211.151.88.20) in 2 ms

;; connection timed out; no servers could be reached
-bash-2.05b$
你该注意看我写的程序,我用的循环和匹配
没有匹配自然不会再计算,通用性更好
你的是写死了的东西,不具备灵活性

你说我那个有漏洞,我不知道是什么漏洞,反正随便写的
只是提供一种思路和方法,具体的有效性和bug你自己考虑了


QUOTE:
你该注意看我写的程序,我用的循环和匹配
没有匹配自然不会再计算,通用性更好
你的是写死了的东西,不具备灵活性

谢谢!

QUOTE:
你说我那个有漏洞,我不知道是什么漏洞,反正随便写的

;; connection timed out; no servers could be reached 如果出现这种情况,循环只会跑一或几次(跑的结果不是想要的),最后结果也也是错误的数值,所以说有“漏洞”,我自己的观点

QUOTE:
只是提供一种思路和方法,具体的有效性和bug你自己考虑了

是的,思路最重要的!

thanks !

#!/usr/bin/perl


use strict;
use warnings;

my $date=`date`;
print $date;

{
my $time;
my $n=0;
my $sina=`dig sina.com.cn +trace`;
while ($sina =~ /in\s(\d+)\sms/g) {
        $n++;
        print "$1\t";
        $time+=$1;
}
print "sina.com.cn\t\t\t";
if ($n==4) {
print $time;
print "\n";
} else {
print "error\n";
}
}


最终代码:

#!/usr/bin/perl


use strict;
use warnings;

my $date=`date`;
print $date;

my @domain=qw/sina.com.cn 163.com baidu.com microsoft.com google.com alexa.com/;

foreach (@domain) {
        my $time;
        my $n=0;
        my $d=`dig $_ +trace`;
        while ($d =~ /in\s(\d+)\sms/g) {
                $n++;
                $time+=$1;
        }
        printf "%-20s",$_;
        if ($n==4) {
                print $time;
                print "\n";
        } else {
                print "error\n";
        }
}


现在的波形图是利用数值,利用execl得到的。但每次都要复制很多数值,特别繁琐,而且不直观,所以想用perl实现
文本文件格式:
bash-2.05$ cat /var/log/dns.log

Mon Feb 18 20:30:00 CST 2008
sina.com.cn             325
163.com                 613
baidu.com               574
microsoft.com           761
google.com              749
alexa.com               696

Tue Feb 19 20:30:00 CST 2008
sina.com.cn              21087
163.com                  784
baidu.com                776
microsoft.com            908
google.com               979
alexa.com                5043

bash-2.05$

根据每天的时延值,用Perl得出时延波形图。

请问各位,可以实现吗?需要用到哪些模块?谢谢各位!

cpan的GD::Graph模块用来画各种图,存成png格式,实例代码里sample5*.pl是用来画line图的
cpan的spreadsheet::writeExcel模块用来制表,最新的版本可以把png贴到excel里
可惜都是英文,慢慢啃吧,好好看看实例代码,很容易的
谢谢!
我心里所想:划line图,并通过apache时时展现出来,就像MRTG或者RRD TOO一样,不过要比以上2个工具简单得多。^_^

谢谢!