Hi!
Ach ja, diese Warmduscher... ;-)
Ha hallo!! Würd gern wissen, wie Informatiker über Perl-Programmierer denken ;-)
In Perl gibt es immer viele Wege, ein Problem zu loesen. Manche sind sauberer, andere weniger sauber, und bei manchen Moeglichkeiten ist es eher Gluecksache, wenn sie funktionieren. Wenn Du die schlechteste dieser Moeglichkeiten suchst, dann solltest Du in Matt-Wright-Scripts nachschauen, ansonsten aber besser nicht.
Bisher hab ich ja nicht gewusst, wer dieser Matt ist, habe aber schon desöfteren seinen Neman hier aufgeschnappt!
Alle Zeilenumbrueche, egal wie codiert (unterscheidet sich zwischen DOS, Mac und Unix),
in \n umwandeln (wobei der echte Wert von \n vom Server-Betriebssystem abhaengt)
$param =~ s/\015\012\015\012/\n/g;
falls noetig, alle \n in HTML-Zeilenumbrueche umwandeln
$param =~ s/\n/<br>/g;
Vielleicht geht das ja sogar fast überall, und nur ich bin das "fast". Bei mir gehts jedenfalls auch so nicht :-(
Statt einen <br> in den Source-Code zu schreiben entfernt deine Variante alle whitespaces (also auch \n) und schreibt alles in eine Wurscht (Zeile) ins HTML-Document !!
Kann es sein, dass <br> beim hinausschreiben auf plain/text irgendwie auch als \n interpretiert wird? Hier ist übrigens gerade dasselbe passiert. In der Antwort-textarea hier steht folgendes:
$param =~ s/\n/
/g;
Ich hab da nix gedreht, das stand schon so da!! klingt irgendwie nach dem gleichen Problem nur in die andere Richtung.
Ach, es ist alles so verwirrend ?:-(
Wenn ich dich noch um einen Gefallen anschnorren dürfte! Könntest du bitte mal folgendes Script auf deinem Rechner ausprobieren und mir sagen, obs bei dir funktioniert?:
use CGI;
$obj = new CGI;
$tester = $obj->param("testfeld");
text2html($tester);
print "Content-type: text/html\n\n";
print "<html><head><title>test</title></head><body>";
print $tester;
print "</body></html>";
sub text2html {
$laenge = @_;
for ($i=0; $i<$laenge; $i++) {
$_[$i] =~ s/\015\012\015\012/\n/g;
$_[$i] =~ s/\n/<br>/g; # jaja, is schon im Einsatz :-)
}
und im html-file:
<html>
<head>
<title>test</title>
</head>
<body>
<form action="/cgi-bin/test.pl" method="GET">
<textarea name="testfeld" cols="60" rows="10"></textarea>
<p><input type="Submit" value="ok"></p>
</form>
</body>
</html>
Falls es bei dir funktionieren sollte, schmeiss ich meinen Computer weg, denn der macht dann anscheinend eh nur was _er_ will. Ich hatte ja schonmal so ein Spezialproblem, das bisher anscheinend nur auf meinem Computer auftauchte, kannst du dich noch erinnern?:
<../../sfarchiv/2000_3/t16596.htm#a83777>
Danke nochmal
Bernhard