2012-07-06 114 views
0

以下代码以每5分钟增量打印最高繁忙值。我怎样才能打印增量(例如02:19:09的2:15)而不是时间戳?打印间隔而不是时间戳

my @maxima; 
    for my $record (@lastArray) {  
     my @fields = $record =~ /([^,\s]+)/g; 
     next unless @fields;  
     my @range = @fields[1..4]; 
     $range[2] =~ s|(\d+):\d\d$|5*int($1/5)|e; 
     my $range = join ' ', @range; 
     my $value = $fields[5];  
     if (@maxima == 0 or $range ne $maxima[-1][0]) {  
      push @maxima, [$range, $value, $record]; 
     } 
     else {  
      @{$maxima[-1]}[1,2] = ($value, $record) if $maxima[-1][1] > $value; 
     } 
    } 
    print $_->[2] for @maxima; 

电流输出:

Mon,Jun,25,02:19:09,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:21:09,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:25:10,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:56:10,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:00:10,2012,999,1,1,0,0,0,0,0,0,0,0 
Mon,Jun,25,03:08:10,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:10:10,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:24:11,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:37:11,2012,999,1,0,0,0,0,0,1,0,0,0 
Mon,Jun,25,03:40:11,2012,999,1,0,1,0,0,0,0,1,0,0 
+0

这个问题会更容易回答,如果你提供的'@ lastArray'内容。 – chansen 2012-07-06 16:34:36

+0

[你有什么尝试?](http://whathaveyoutried.com) – 2012-07-06 16:48:56

回答

2

你必须在指定的问题上你的技能的工作。你已经提出了几个不同的问题来解决这个问题,主要问题是你对问题的陈述是不完整的,或者从一个问题到另一个问题。

我仍然担心你总是将程序分为两部分 - 输入的处理和输出的生成 - 我相信两者可以结合在一起形成一个更好,更可靠的解决方案,而不是你已经达到了这个目的。

这是我以前的答案之一的变化,做我认为你想要的。由于您仅显示了程序的后半部分,因此无法提供完整的解决方案。此代码预计数据将以与您已使用的代码相同的方式显示在@lastArray中。

my @maxima; 

for my $record (@lastArray) {  

    my @fields = split /,/, $record; 
    next unless grep $_, @fields;  

    $fields[3] =~ s|(\d+):\d\d$|sprintf '%02d', 5*int($1/5)|e; 
    $record = join ',', @fields; 
    my $key = join ' ', @fields[1..4]; 
    my $value = $fields[5]; 

    if (@maxima == 0 or $key ne $maxima[-1][0]) {  
     push @maxima, [$key, $value, $record]; 
    } 
    else {  
     @{$maxima[-1]}[1,2] = ($value, $record) if $maxima[-1][1] > $value; 
    } 
} 
print $_->[2] for @maxima; 

输出

Mon,Jun,25,02:15,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:20,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:25,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,02:55,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:00,2012,999,1,1,0,0,0,0,0,0,0,0 
Mon,Jun,25,03:05,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:10,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:20,2012,999,1,0,1,0,0,0,0,1,0,0 
Mon,Jun,25,03:35,2012,999,1,0,0,0,0,0,1,0,0,0 
Mon,Jun,25,03:40,2012,999,1,0,1,0,0,0,0,1,0,0 
+0

所以他真正想要的不是一个'增量' - 这是一个5分钟的时间戳所属的时间间隔。惊人。 ) – raina77ow 2012-07-06 18:14:37

+0

@ raina77ow:是的。看到我的观点? – Borodin 2012-07-06 18:39:53

相关问题