Christian: \n funktioniert nicht.

Hier mein Script:

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: html/text\n\n";
my @zahlenarray = ('1','2','3','4','5');
my @buchstabenarray = ('A','B','C','a','b','c');
my @zahlenarray = sort {$a <=> $b} (@zahlenarray);
my @buchstabenarray = sort {$a cmp $b} (@buchstabenarray);
my @zahlenarray = join(',',@zahlenarray);
my @buchstabenarray = join(',',@buchstabenarray);
print "Zahlenarray: @zahlenarray\n";
print "Buchstabenarray: @buchstabenarray\n";

Funktionieren tut's wunderbar, nur \n macht keine nächste Zeile.
Ich habe es hochgeladen: http://webb22.mc2.methfessel-computers.de/cgi-bin/test/a/array_sort.pl

Wieso? Was ist an meinem Code verkehrt, sodass keine neue Zeile beginnt?

Christian

  1. Hallo Christian,

    #!/usr/bin/perl
    use CGI::Carp qw(fatalsToBrowser);
    print "Content-type: html/text\n\n";

    was der Browser bekommt ist also HTML.

    Funktionieren tut's wunderbar, nur \n macht keine nächste Zeile.

    Wundert Dich das? In HTML ist das völlig normal.

    Wieso? Was ist an meinem Code verkehrt, sodass keine neue Zeile beginnt?

    Nutze die entsprechenden HTML-Elemente oder schicke dem Browser lieber Inhalt des Typs

    text/plain

    Freundliche Grüße

    Vinzenz

    1. Hallo Ingrid,

      #!/usr/bin/perl
      use CGI::Carp qw(fatalsToBrowser);
      print "Content-type: html/text\n\n";

      was der Browser bekommt ist also HTML.

      Sowas merk' ich nicht. Natürlich wäre es HTML, wenn die Zeile

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

      lautete

      Nutze die entsprechenden HTML-Elemente oder schicke dem Browser lieber Inhalt des Typs

      text/plain

      Da weiß ich es doch.

      Berichtigende Grüße

      Vinzenz

      1. hallo Vinzenz,

        print "Content-type: html/text\n\n";
        Sowas merk' ich nicht. Natürlich wäre es HTML, wenn die Zeile
        print "Content-type: text/html\n\n";
        lautete

        och ... armer schwarzer Kater.

        Sowas passiert, wenn man älter, erfahrener und weiser wird. Man ist halt nicht mehr so ungestüm wie in den jungen Jahren, aber man ist noch nicht so weit, gemachte Fehler gar nicht mehr zu bemerken.

        Glaub mir, ich weiß, wovon ich da rede ...

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
    2. Ich habe es so geändert:
      #!/usr/bin/perl
      use CGI::Carp qw(fatalsToBrowser);
      print "Content-type: text/html\n\n";
      my @zahlenarray = ('1','2','3','4','5');
      my @buchstabenarray = ('A','B','C','a','b','c');
      my @zahlenarray = sort {$a <=> $b} (@zahlenarray);
      my @buchstabenarray = sort {$a cmp $b} (@buchstabenarray);
      my @zahlenarray = join(',',@zahlenarray);
      my @buchstabenarray = join(',',@buchstabenarray);
      print "Zahlenarray: @zahlenarray\n";
      print "Buchstabenarray: @buchstabenarray\n";

      Ich habe mich da wohl verschrieben. Aber \n funktioniert immernoch nicht: http://webb22.mc2.methfessel-computers.de/cgi-bin/test/a/array_sort.pl

      In dem Tutorial, welches ich gerade lese, steht der text/html Content-type.
      http://www.webdesign-referenz.de/technikI_perl_d.shtml

      Wieso?

      1. Hallo Christian,

        Ich habe mich da wohl verschrieben. Aber \n funktioniert immernoch nicht: http://webb22.mc2.methfessel-computers.de/cgi-bin/test/a/array_sort.pl

        warum sollte der Browser einen Zeilenumbruch machen. Es gibt nichts, was ihn dazu veranlasst. Ein Zeilenumbruch im HTML-Quelltext bewirkt keinen Zeilenumbruch bei der Anzeige im Browser. Es ist ein "whitespace" wie z.B. ein Leerzeichen oder ein Tabulatorzeichen.

        Du könntest Dein Zahlen- und Buchstabenarrays in je einen Absatz schreiben, dazu verwendest Du <p>-Elemente.

        Natürlich bietet HTML auch weitere Möglichkeiten an:
        Einfach, aber nicht unbedingt aussagekräftig wäre das Erzwingen eines Zeilenumbruchs.
        Nachahmung von text/plain mit präformatiertem Text, Du könntest Deine Arrays in Listen packen, ...

        Du siehst HTML bietet Dir viele Möglichkeiten, Zeilenumbrüche zu erzielen. Nur Dein "\n", das ist für den Browser im Normalfall _kein_ Grund, einen Zeilenumbruch vorzunehmen.

        In dem Tutorial, welches ich gerade lese, steht der text/html Content-type.
        http://www.webdesign-referenz.de/technikI_perl_d.shtml

        Wieso?

        Weil einfacher Text (text/plain) vom Browser typischerweise so angezeigt wird, wie er in der Datei steht.

        Freundliche Grüße

        Vinzenz

  2. hi,

    Funktionieren tut's wunderbar, nur \n macht keine nächste Zeile.

    Das bezweifle ich.

    Ich habe es hochgeladen: http://webb22.mc2.methfessel-computers.de/cgi-bin/test/a/array_sort.pl

    Diese Ressource will mir mein Browser lediglich zum Download anbieten, da sie mit dem ungültigen Content-type html/text ausgeliefert wird - text/html dürfte wohl gemeint sein?
    Dann bring deinem Server bitte erst mal bei, das richtig zu machen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hi,

    neben dem bereits Gesagten:

    #!/usr/bin/perl

    Benutze strict und warnings.

    my @zahlenarray = join(',',@zahlenarray);
    my @buchstabenarray = join(',',@buchstabenarray);

    Warum erzeugst Du hier eigentlich Arrays, die es schon gibt, und weist ihnen Skalare zu? Das ist ja fast wie Nuttenbescheißen: zahlen und abhauen.

    Wieso? Was ist an meinem Code verkehrt, sodass keine neue Zeile beginnt?

    Es beginnt eine neue Zeile. Übrigens werden HTTP-Header mit CRLF beendet, nicht nur mit LF.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes