Perl 打印时间间隔而不是时间戳
以下代码以每5分钟的增量打印最高忙碌值。如何打印增量(例如02:19:09的2:15)而不是时间戳Perl 打印时间间隔而不是时间戳,perl,Perl,以下代码以每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+)
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
你需要在指定问题方面提高你的技能。为了达到这一点,你问了几个不同的问题,主要问题是你对问题的陈述不完整,或者从一个问题到下一个问题有所改变 我仍然担心,您总是将程序分为两部分—输入的处理和输出的生成—并且我确信这两部分可以结合在一起,形成比您以这种方式实现的更好、更可靠的解决方案 这是我之前的一个答案的变体,我想这是你想要的。因为您只展示了程序的后半部分,所以我无法提供完整的解决方案。此代码希望数据以与您已经使用的代码相同的方式显示在
@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
如果您提供
@lastArray
的内容,这个问题将更容易回答。因此,他真正想要的不是“增量”,而是时间戳所属的5分钟间隔。太棒了。)