#! /usr/bin/perl
use strict;
use warnings;
my %hash = ();
while(my $line = <DATA>){
chomp $line;
my @array = split(/\s+/,$line);
$hash{$array[1]} = [@array[2,3,4,0,6,5]];
}
my @sorted_keys = sort{change_time($hash{$a}->[3],$hash{$a}->[4]) <=>
change_time($hash{$b}->[3],$hash{$b}->[4])}keys %hash;
print "\nFlugnummer\tDatum \tUhrzeit\t",sprintf("%15s",'Zielort'),
"\t",sprintf("%15s",'Abflugort'),"\tTerminal\tAnkunft\n";
foreach(@sorted_keys){
print sprintf("%10s",$_),"\t",
sprintf("%10s",$hash{$_}->[3]),"\t",
sprintf("%7s",$hash{$_}->[4]),"\t",
sprintf("%15s",$hash{$_}->[0]),"\t",
sprintf("%15s",$hash{$_}->[1]),"\t",
sprintf("%9s",$hash{$_}->[2]),"\t",
sprintf("%7s",$hash{$_}->[5]),"\n";
}
my $flight = 336632;
print "Status von Flug $flight:\t", status($hash{336632});
sub change_time{
my($date,$clock) = @_;
$clock =~ s/\://;
return join("",reverse split(/\./,$date)).$clock;
}
sub status{
my ($arref) = @_;
my @times = localtime(time);
my $time = sprintf("%04d%02d%02d%02d%02d",($times[5] + 1900),($times[4] + 1),$times[3],$times[2],$times[1]); # aktuell
my $check = change_time($arref->[3],$arref->[4]); # Abflug
my $check2 = change_time($arref->[3],$arref->[5]); # Ankunft
my $diff1 = $time - $check;
my $diff2 = $time - $check2;
if($diff1 >= 0 && $diff2 <= 0){
return "Flugzeug in der Luft\n";
}
elsif($diff1 < 0){
return "Flug kommt noch\n";
}
elsif($diff2 > 0){
return "Flugzeug schon gelandet\n";
}
}
# bei _ _DATA_ _ die Leerzeichen weglassen
_ _DATA_ _
30.07.2004 123456 Malaga Bielefeld C 12:15 11:31
23.07.2004 654321 Berlin Bielefeld D 13:00 12:58
04.07.2004 587931 Barcelona Bielefeld E 14:00 12:00
30.07.2004 356987 Muenchen Bielefeld A 12:50 12:00
30.07.2004 879652 Koeln Bielefeld B 12:55 12:15
30.07.2004 456987 Bonn Bielfeld H 14:00 11:55
05.08.2004 456789 Freiburg Bielfeld C 15:00 13:00
01.09.2004 336632 Berlin Bielefeld B 22:00 16:00