Klaus Mock: \n verloren :-(

Beitrag lesen

Hallo,

#!/usr/bin/perl
"Content-type: text/html\n\n";

Da sag ich jetzt nichts;-)

my @data = <DATA>;

weißt Du eigentlich, was jetzt in $data[1] drinsteht?
Richtig, "3\n". Also nicht nur die Zahl, sondern auch der Zeilenumbruch.

[...]
$data[1]++;

Und jetzt soll zu dem Zeuchs von oben was addiert werden. Perl versuch das Beste, findet auch eine Zahl, wandelt intern den String in eine Zahl um, Addiert und schreibt das ganze zurück in die Variable.
Was bei der Aktion auf der Strecke bleibt, ist der Zeilenumbruch.

print DATA @data;

Deshalb wird hier beid $data[1] auch kein Zeilenumbruch ausgegeben.

Jetzt kannst Du natürlich versucht sein,
$data[1]++;
$data[1].= "\n";
zu schreiben. Aber das wäre nicht so toll, obwohl es das aktuelle Problem lösen würde.

Du solltest IMHO von Anfang an klare Verhältnisse schaffen.
D.h. schon beim Einlesen die Zeilenumbrüche entfernen.
Dann mit den Werten arbeiten.
Beim Rausschreiben hängst Du eben bei jeder Zeile einen Zeilenumbruch an.

Grüße
  Klaus