#! perl -w use strict; use CGI qw/ :standard/; my @datahashes = daten('fp.txt');     # Daten werden allen Subroutinen zugänglich gemacht print page('Flughafen Bielefeld',print_text_html(@datahashes));   # der Seite wird der Name Flughafen gegeben, der Subroutine werden die Daten übergeben  print "$day"; sub daten {    my $file = shift;                                      #???    open(FILE,$file) || die "Datei $file nicht gefunden!";     # die Datei fp.txt, wie ganz oben angegeben, wird geöffnet    my %am = my %ziel = my %von = my %gate = my %arrival = my %depart =();        # es werden leere Hashes deklariert while ( defined (my $line = ) ) {                    # durch die while-Schleife kann die Datei Zeile für Zeile eingelsen werden    chomp $line;                                           # chomp entfernt den Zeilenumbruch    my @fields = split(' ', $line);                        # das array wird in zeilen zerlegt    my $flugnr = $fields[1];                               # das 2. Element des Arrays wird als $flugnr deklariert    $am{$flugnr} = $fields[0];                             # die restlichen Elemente werden unter dem Key flugnr abgelegt    $ziel{$flugnr} = $fields[2];    $von{$flugnr} = $fields[3];    $gate{$flugnr} = $fields[4];    $arrival{$flugnr} = $fields[5];    $depart{$flugnr} = $fields[6]; }; close(FILE);                                                  # die Datei wird wieder zugemacht    return (\%am,\%ziel,\%von,\%gate,\%arrival,\%depart);     # Hashreferenzen werden zurückggeben. Die Rückgabe mehrerer Hashes ist nicht möglich, weil };                                                            # Perl diese sonst zu einem einizgen langen Hash zusammenpacken würde sub datum_uhrzeit {                                                           #neue Subroutine    my ($Sekunden,$Minuten, $Stunden, $Monatstag, $Monat,                    # Den Variablen wird die reale Zeit/das reale Datum übergeben    $Jahr, $Wochentag) = localtime(time);    my $CTIME_String = localtime(time);    $Monat+=1;    $Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;    $Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;    $Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;    $Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;      $Jahr+=1900;    my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Do nnerstag","Freitag","Samstag");    my $datum = "$Wochentage[$Wochentag], der $Monatstag.$Monat.$Jahr";    my  $uhrzeit = "$Stunden:$Minuten";    return ($uhrzeit,$datum,$Monatstag,$Monat,$Jahr); }; sub status {  my($am,$ziel,$von,$gate,$arrival,$depart)=@_;          #Aufruf Subroutine  my ($uhrzeit,$datum,$Monatstag,$Monat,$Jahr) = &datum_uhrzeit();               #Aufruf Subroutine  my ($std,$min) = split(':',$uhrzeit);                  #realeUhrzeit wird in Minuten und Stunden aufgeteilt  my $realminutes = 60*$std + $min;                      #reale Uhrzeit wird nur noch in Minuten angegeben   my %status=();  foreach my $flugnr ( keys %$am ) {  my ($stunde,$minute) = split(':',$depart->{$flugnr});  #depart-Uhrzeit wird in Minuten und Stunden aufgeteilt  my ($departday,$departmonth,$departyear) = split('\.',$am->{$flugnr});  my $departminutes = 60*$stunde + $minute;              #depart-Uhrzeit wird nur noch in Minuten angegeben  my $info=$departminutes-$realminutes;    my $status=''; SWITCH: {  if ( ($info <= -6) && ($Monatstag eq $departday) && ($Monat eq $departmonth) && ($Jahr eq $departyear) ) {     $status="weg"; last SWITCH; };    if ( ($info <= 0) && ($Monatstag eq $departday) && ($Monat eq $departmonth) && ($Jahr eq $departyear) ) {     $status="startet"; last SWITCH; };  if ( (($info <= 10) && ($Monatstag eq $departday)) && (($Monat eq $departmonth) && ($Jahr eq $departyear))) {     $status="Boarding"; last SWITCH; };  if ( (($info <= 30) && ($Monatstag eq $departday)) && (($Monat eq $departmonth) && ($Jahr eq $departyear))) {     $status="Check in"; last SWITCH; };     $status="am Boden"; };  $status{$flugnr}=$status;                                              # der Status auf gestartet umspringen };  return %status;                                                       #$status wird zurück gegeben };