#! perl -slw use strict; use diagnostics; use Data::Dump qw[ pp ]; my %in; my %former_in; my %airport_hash; # first select and the data whether the airport is AAAA or BBBB while (){ $_ =~ s/\s+$//; m[^(\w\w\w\w)] and push @{$airport_hash{$1}}, $_; } foreach my $airport ( keys %airport_hash){ my @lines = @{$airport_hash{$airport}}; foreach my $line(@lines){ # print STDOUT "line is $line"; if ($line =~ /(\w\w\w\w\s)(\d\d):(\d\d) (.+)/){ push @{ $in{ $2 } }, $line and $former_in{$line} = $3; print STDOUT "1 is $1"; # print STDOUT "2 is $2"; # print STDOUT "3 is $3"; # print STDOUT "4 is $4"; } } for my $hr ( sort{ $a <=> $b } keys %in ) { my $n = $#{ $in{ $hr } }; my $step = 60 / $n; my $min = 0; for my $flight ( @{ $in{ $hr } } ) { my $former_time = $former_in{$flight}; # relative difference my $diff = int( $min ) - $former_in{$flight}; printf( "%02d:%02d %s %s\n", $hr, int( $min ), $flight, $diff ); $min += $step; $min = 59 if $min > 59; } } } # AAAA and BBBB represent two airports __DATA__ AAAA 11:01 A1 AAAA 11:03 A3 BBBB 11:10 B4 AAAA 11:30 C4 AAAA 11:30 C6 BBBB 11:50 D5 AAAA 12:01 E15 AAAA 12:01 F16 BBBB 12:02 G6 BBBB 12:25 H2 BBBB 12:27 Z6 BBBB 12:27 Y2 AAAA 12:25 I8 BBBB 12:30 J3 AAAA 12:30 K7 BBBB 12:50 L15 AAAA 12:55 M16