Oliver Sieben: Zeilenumbrueche verschwinden beim laden einer txt von rem. Host

Hallo,

ich moechte mit folgendem einfachen Konstrukt eine txt Datei von einem anderen Server laden, weiterverarbeiten(!) und ausgeben.

use LWP::Simple;

$url = "http://www.einedomain.de/datei.txt";
$doc = get($url);

print "Content-type: text/html\n\n";
print "$doc";

Lieder gehen mir hierbai die Zeilenumbrueche verloren, d.h. Netscape zeigt mir einen fortlaufenden Text an, klar der <br> tag fehlt.

Wie bekomme ich nun die Datei zeilenweise eingelesen, um sie so weiterverarbeiten zu koennen.

Vielen Dank
Oliver Sieben

  1. Hallo,

    ich moechte mit folgendem einfachen Konstrukt eine txt Datei von einem anderen Server laden, weiterverarbeiten(!) und ausgeben.

    use LWP::Simple;

    $url = "http://www.einedomain.de/datei.txt";
    $doc = get($url);

    print "Content-type: text/html\n\n";
    print "$doc";

    Lieder gehen mir hierbai die Zeilenumbrueche verloren, d.h. Netscape zeigt mir einen fortlaufenden Text an, klar der

    »»  tag fehlt.

    Wie bekomme ich nun die Datei zeilenweise eingelesen, um sie so weiterverarbeiten zu koennen.

    Vielen Dank
    Oliver Sieben

    Hoffentlich helfe ich dir damit:

    ###datei oeffnen

    open(DATEI,"datei.txt")

    ###zeilenweise wo ablegen

    while($zeile = <DATEI>){
       ####z.b.
       @zeilen[i] = $zeile;
       i++;
    }

    Mit Vorbehalt (self.perlkenntnisse = zwei Tage)

    :)))

    Also, ich habe mir das zufällig gestern durchgelesen und ich bin noch nagelneu auf dem Gebiet, aber vielleicht hilft's dir ja weiter. Auf jeden Fall kannst du mit diesem <>-Operator (<DATEI>) Dateien zeilenweise einlesen.

    Gruß,
    Tobias

  2. Hallo Oliver,

    print "Content-type: text/html\n\n";
    print "$doc";

    Lieder gehen mir hierbai die Zeilenumbrueche verloren, d.h. Netscape zeigt mir einen fortlaufenden Text an, klar der

    »»  tag fehlt.

    Eben. Dann setz ihn doch einfach, und zwar so:

    print "Content-type: text/html\n\n";
    print "<html><body><pre>$doc</pre></body></html>";

    viele Gruesse
      Stefan Muenz

    Oder noch einfacher:

    print "Content-type: text/plain\n\n";
    print "$doc";

    viele Gruesse
      Stefan Muenz

  3. Hi!

    print "Content-type: text/html\n\n";
    print "$doc";

    Lieder gehen mir hierbai die Zeilenumbrueche verloren, d.h. Netscape zeigt mir einen fortlaufenden Text an, klar der

    »»  tag fehlt.

    Das einfachste waere, den richtigen Content-Type auszugeben. Denn was Du da an den Browser sendest, ist ja gar kein HTML, sondern normaler Text. Also:

    print "Content-type: text/plain\n\n";

    Wie bekomme ich nun die Datei zeilenweise eingelesen, um sie so weiterverarbeiten zu koennen.

    Die direkt Antwort auf diese Frage ist allerdings, nach dem Einlesen den gesamten Text an den Zeilenumbruechen zu splitten:
        @doc = split(/\n/, $doc);
    Es kann aber sein, dass die Textdatei im Microsoftformat gespeichert ist, d.h. Du muesstest an /\r\n/ splitten, oder fuer das Mac-Format an /\r/. Wir hatten das Thema schonmal ausfuehrlich hier, vielleicht findet noch jemand den Thread im Archiv und gibt uns den Link. Wenn Du sicher sein kannst, dass der Text im Unix-Format vorliegt, kannst Du einfach das /\n/ als Trennzeichen voraussetzen, wie oben.

    Dann kannst Du das in einem Loop wieder ausgeben:
        for (@doc) {
            print $_, "<BR>\n";
        }

    Bye, Calocybe