#! perl -slw use strict; my %in; while( ) { if( m[(\S+) (\d\d):\d\d (.+)$] ) { push @{ $in{ $1 }{ $2 } }, $3; } else { die 'Bad data'; } } for my $airport ( sort keys %in ) { for my $hr ( sort{ $a <=> $b } keys %{ $in{ $airport } } ) { my $n = $#{ $in{ $airport }{ $hr } }; my $step = 60 / $n; my $min = 0; for my $flight ( @{ $in{ $airport }{ $hr } } ) { printf( "%s %02d:%02d %s\n", $airport, $hr, int( $min ), $flight ); $min += $step; $min = 59 if $min > 59; } } } __DATA__ ...