Klaus Mock: html mit CGI aufrufen

Beitrag lesen

Hallo,

die routines.pl

chdir($home/pfad);

1.) $home ist nirgendwo gesetzt.
2.) chdir($home/pfad); ergibt bei mir (perl 5.6 'Illegal division by zero')
besser ist
  chdir("$home/pfad");
wobei wie gesagt $home nicht definiert wurde (wahrscheinlich sollte es $dir heißen).
und bei pfad vermute ich auch es sollte eigentlich $pfad heißen, muß es aber nicht.

ich persönlich mag auch ein 'chdir' nicht so wirklich, ich vermeide es wo es nur geht, weil dadurch recht schnell der Ausgangspunkt, d.h eine definierte Umgebung verloren geht.

sub dopage {[...]

was mir hier abgeht ist eine Fehlerbehandlung:
sub dopage
{
my $type = lc($_[0]);
my $filename;
my $docdir = "$dir/pfad"; #statt chdir und $dir statt $home
local(*IN);
if($type eq 'login')
  {
  $filename = "$docdir/test/login/login.html";
  }
elsif ($type eq 'loginfail')
  {
  $filename = "$docdir/test/login/fail.html";
  }
elsif ($type eq 'index')
  {
  $filename = "$docdir/test/index/index.html";
  }
else # falls $type irgendeinen blödsinn beinhaltet
  {
  $filename = "$docdir/test/invalid_type.html"; # oder was auch immer
  }
print "Content-type: text/html\n\n";
if(open(IN,$filename))
  {
  print while <IN>; #datei ausgeben
  close(IN);
  }
else # falls das öffnen der Datei nicht geklappt hat
  {
  print <<EOF
hier eine schöne HTML-gestylte Fehlermeldung mit vielen DHTML Elementen und einem Flash, daß irgendwas überhaupt nicht stimmt;-)
EOF
;
  }
return;
}

BTW: Die Formatierung des Quellcodes ist zwar Geschmacksfrage, aber etwas Struktur täte Deinem Code sicherlich nicht schlecht.
Perl kann zwar auch mit weitgehend unformatiertem Quellcode etwas anfangen, die Programmiererin allerding schon deutlich weniger. MIr passiert es immer wieder, daß ich, bevor ich ein Programm ändere, erst mal den Code so formatieren muß, damit ich halbwegs dessen Struktur verstehen kann.
Bei der Entstehung von Code mag man ja noch wissen, was gemeint ist, zwei Wochen später (und zig Zeilen Code weiter) sieht das ganze anders aus. Aber das nur am Rande.

Grüße

Klaus