Andreas Bierhals: CGI - Hilfe bei einem fast ganzen Skript erbeten

Beitrag lesen

Hallo Jutta!

Jetzt ist mein Skript gerade fertig, daher poste ich es auch noch

  • sonst haette ich ja umsonst herumprobiert ;-)
    Immerhin gibt's bei mir auch gleich die angedeutete JavaScript-Ausgabe mit...

#!/usr/bin/perl

Datei 'termine.csv' zeilenweise einlesen...

open(EIN, "<termine.csv") || die "Kann termine.csv nicht finden!\n";
while(<EIN>)
{
  push(@zeilen, $_);
}
close(EIN);

Die Zeilen sortieren

(Achtung: Die Anzahl der Stellen sollte bei

#  allen Eintraegen gleich sein,
#  also z.B. immer  JJJJ;MM;TT;SS;MM; )

@sortZeilen = sort(@zeilen);

Inhalte der Zeilen ausgeben

open(TERMINEDAT, ">termine.js");
$i=0;
for(@sortZeilen) {
  ($jahr, $monat, $tag, $stunde, $minute) = split(/;/, $_);

print TERMINEDAT "terminArray[$i] = "$tag.$monat.$jahr";\n";
  print TERMINEDAT "zeitArray[$i]   = "$stunde:$minute";\n";
  $i++;
}
close(TERMINEDAT);

... aus der Datei ...

1998;07;12;24;23;
1995;03;16;24;23;
1993;05;14;26;23;
1993;05;14;24;23;

... produziert dieses Skript bei mir die Ausgabe (perl 5.003_07)

terminArray[0] = "14.05.1993";
zeitArray[0]   = "24:23";
terminArray[1] = "14.05.1993";
zeitArray[1]   = "26:23";
terminArray[2] = "16.03.1995";
zeitArray[2]   = "24:23";
terminArray[3] = "12.07.1998";
zeitArray[3]   = "24:23";

Das Skript ist wahrscheinlich noch stark absturzgefaehrdet,
wenn das Format von 'termine.csv' nicht stimmt.
Insbesondere sollten keine ueberfluessigen Leerzeilen darin
vorkommen...
Die Sortierroutine funktioniert ausserdem nicht, wenn
z.B. die Stundenzahl irgendwo nur einstellig angegeben wird
(da dann z.B. 12 Uhr vor 9 Uhr gesetzt wird...)

Vielleicht faellt jemandem im Forum, der mehr PERL-Erfahrung hat,
ausser der Fehlerabfangroutinen
ja noch eine bessere Sortier-Routine ein, die wirklich die
einzelnen Zahlenwerte miteinander vergleicht?

Viele Gruesse!

Andreas