Matti Maekitalo: nerviger zeilenumbruch

Beitrag lesen

use Mosche;

folgendes perl-script (ausschnitt) ist nicht davon abzuhalten, im fehlerfall (hier: leeres feld aus html-form) einen nervigen zeilenumbruch zu prduzieren.

Ich habe jetzt ein bisschen über dein Script drübergeguckt - und habe einiges gefunden, was man verbessern kann

#leere felder prüfen:
my ($check);
$check= new CGI;

my $check = new CGI; # ist als einzeiler schöner, oder?

sub eintragen
{
        #eintrag vorbereiten
        $date=localtime();

$betreff=param('betreff');
        $name=param('name');
        $nachricht=param('nachricht');
        $mail=param('mail');

Warum benutzt du oben das CGI Modul über den OOP-Ansatz und hier direkt?

$nachricht=~ s/(?:\015\012?|\012)/<br>/g;

$eintrag="$betreff\t $name\t $date\t $mail\t $nachricht\n";

if ($check->param('name') eq '' || param('mail') eq '' || param('betreff')       eq '' || param('nachricht') eq '')

Frag das ganze doch vorher ab, und setze darauf hin $eintrag.

Alleine durch das ">>" beim öffnen der Datei wird der Zeilenumbruch erzeugt. Du kannst das ganze umgehe, indem du dein Script anders aufbaust:

my $c = new CGI;

if ($c->param('name') && $c->param('mail') && $c->param('betreff') && $c->param('nachricht')) {
 # Fehlermeldung ausgeben
 print "<h1>Irgendwas nicht angegeben</h1>";
} else {
 my $date = localtime();
 # alle Eintraäge vorhanden
 my $nachricht = $c->param('nachricht');
 $nachricht=~ s/(?:\015\012?|\012)/<br>/g;

# da du \t ale Begrenzerzeichen benutzt,
 # solltest du auch die \t hier escapen
 $nachricht =~ s/\t/\t/g;
 open (FH, ">>dein_file") or die "Fehler: $!";
 print FH $c->param('betreff'), "\t", $c->param('name'),
  "\t$date\t," $cparam('mail'), "\t", $c->param('nachricht'),
  "\n";
 close(FH);
}

So sollte es besser funktionieren...

use Tschoe qw(Matti);