#! /usr/bin/perl use strict; use warnings; my %hash = (); while(my $line = ){  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