Perl string ersetzen

hallo, ich hoffe, ich finde hier einen kleinen Denkanstoss.

Ich gebe in einem Textarea was ein, mit Zeilenumbruch. Das speicher ich in meiner MySql-Db auch ordentlich ab(Variable $text). wenn ich mir die daten aber anzeigen lassen möchte, werden die Zeilenumbrüche nicht dargestellt.
also:
print „$text“;
hier keine Umbrueche

print „$text“;
hier umbrueche

aber ich moechte das ja nicht in einem Textarea nachher darstellen. Kann ich irgentwie enter ersetzen? oder kann ich das textarea auf ‚Readonly‘ setzen?

hoffentlich weiss jemand bescheid!

Gruss steffi

Hallo Steffi,

also Du schreibst zwar etwas wirr aber ich versuchs mal…

Folgende Annahmen:

Du programmierst ein CGI-Script.
Das Textarea usw. bezieht sich auf ein HTML-Forumular…

OK.

Das problem ist, das in HTML nur dann Zeilenumbrüche dargestellt werden, wenn diese durch den entsprechenden HTML-Code
erzwungen werden. Wenn du im HTML Source nachschaust, wirst Du feststellen, dass auch bei einem print $text die Zeilenumbrüche angezeigt werden. Nur der Browser stellt sie nicht dar…

Lösung:
Du musst die Newlines durch
ersetzten, bzw. die
hinzufügen. Und zwar durch eine der folgenden Möglichkeiten:

  • entweder jagst du $Text durch eine RegularExpression und ersetzt jeden \n durch
    . =>

    $text =~ s/\n/
    /g;

  • Du liest den Text in ein array ein und machst dann eine foreach schleife =>

    foreach (@text) {print "$_
    "}

  • es kann sein, dass im CGI.pm eine Funktion enthalten ist in der Art von nl2br oder so (oder war das PHP ???)

Noch Fragen ? Dann her damit…

Gruß
Arne

ich weiss, ich kann mich schlecht ausdruecken, aber du hast es ja verstanden :smile:

$text =~s/\n/
/g;
genau das hab ich gesucht!

Vielen DAnk!
Bye Steffi