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);