Siechfred: print ....wird trotz "exit" ausgeführt?!...apache BUG?

Beitrag lesen

Hallo Alain.

ich dachte immer wenn exit ausgeführt wird dann geht in perl nix mehr?

Ja, das ist auch so.

Ich habe ein gästebuch,welches emails in einer log abspeichert, wenn der eintrag gefunden wird,wird exit ausgeführt.
Hier das beispiel:
sub check_log {
$logfile = "/home/guestbook/contlog.txt";
open(LOG,"+<$logfile") || &dead;

Wenn die Datei nicht geöffnet werden kann, hat das eine andere Ursache als die, welche du durch die sub dead ausgeben lässt. Besser wäre es, eine aussagekräftige Fehlermeldung mitzugeben, in diesem Fall $!.

while (<LOG>){
&dead if /$FORM{'username'}/;
}

Ich persönlich bin weder ein Freund dieser q'n'd-Schreibweise noch der Verwendung eines RegEx, wo keiner nötig ist. Ein simpler Stringvergleich reicht hier völlig aus, zumal hier auch dein Problem liegen könnte (dein Regex matcht bei "hotmail.net" mangels Begrenzer auf jede E-Mail "...@hotmail.net", unbeschadet dessen, was vor dem "@" steht):

while(<LOG>) {
  chomp($_);
  if ($_ eq $FORM{'username'}) {
    dead("$FORM{'username'} already exists.");
  }
}

sub dead {
print "Content-type: text/html\n\n";
print "<center>Error: hello,you have already an entry in our guestbook\n";

hier dann besser
print "<center>Error: $_[0]\n";

Vielleicht hilft's ja.

Freundschaft!
Siechfred

--
Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.