2012-07-06 113 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

相關問題