#! /usr/bin/env perl use strict; use warnings; my %data; while ( my $line = <> ) { chomp $line; my ($date, $time, $dataset, $seconds, $bytes) = split /\s/, $line; $data{$date}{$dataset}{'size'} = $bytes; $data{$date}{$dataset}{'time'} = $seconds; } my @dates = sort keys %data; my %datasets; foreach my $ds ( @dates ) { foreach my $set ( keys %{$data{$ds}} ) { $datasets{$set}++; } } my @report; push @report, "Date\t" . join( "\t\t", sort keys %datasets ); foreach my $dates ( @dates ) { my @line; push @line, $dates; foreach my $column ( sort keys %datasets ) { push @line, $data{$dates}{$column}{'size'} ? $data{$dates}{$column}{'size'} : ''; push @line, $data{$dates}{$column}{'time'} ? $data{$dates}{$column}{'time'} : ''; } push @report, join( "\t", @line ); } print join( "\n", @report ) . "\n"; 1;