Christoph Schnauß: CGI.pm Version 3.10

hallo Forum,

mein Provider hat seine installierte Perl-Version upgedatet, so daß es jetzt Perl 5.8.7 ist. Dabei hat er auch ein neues CGI-Modul eingespielt.
Die Folge war zunächst, daß ich mich über ein paar generierte Seiten ärgerte, weil da plötzlich das Layout nicht mehr stimmte. CGI.pm gibt ja default XHTML aus, neuerdings aber gibts, wenn man nicht explizit etwas vorgibt, die Zeile
  <?xml version="1.0" encoding="iso-8859-1"?>
nicht mehr, dafür gibts ein neues Argument
  -declare_xml
Dafür habe ich aber in der Doku noch keine Erläuterung gefunden und weiß nicht genau, welchen Wert ich zuzuweisen hätte.

Hat sich jemand damit schonmal beschäftigt und gibts noch andere Neuigkeiten in CGI.pm, die ich noch nicht bemerkt habe?

Grüße aus Berlin

Christoph S.

  1. Hi Christoph!

    mein Provider hat seine installierte Perl-Version upgedatet, so daß es jetzt Perl 5.8.7 ist. Dabei hat er auch ein neues CGI-Modul eingespielt.
    Die Folge war zunächst, daß ich mich über ein paar generierte Seiten ärgerte, weil da plötzlich das Layout nicht mehr stimmte. CGI.pm gibt ja default XHTML aus, neuerdings aber gibts, wenn man nicht explizit etwas vorgibt, die Zeile
      <?xml version="1.0" encoding="iso-8859-1"?>
    nicht mehr, dafür gibts ein neues Argument
      -declare_xml
    Dafür habe ich aber in der Doku noch keine Erläuterung gefunden und weiß nicht genau, welchen Wert ich zuzuweisen hätte.

    Helfen dir diese Infos weiter: http://perldoc.perl.org/CGI.html#CREATING-THE-HTML-DOCUMENT-HEADER (noch ein bisschen nach unten scrollen)?

    Grüße,
    Fabian St.

    1. hallo Fabian,

      Helfen dir diese Infos weiter: http://perldoc.perl.org/CGI.html#CREATING-THE-HTML-DOCUMENT-HEADER (noch ein bisschen nach unten scrollen)?

      Naja, nicht wirklich. Übrigens ist das exakt dasselbe (bloß grafisch etwas aufgelockert), was ich mir auch mit
        perldoc CGI
      auf die Konsole schreiben lassen kann. Der Textabsatz
        "The -declare_xml argument, when used in conjunction with XHTML, will put a <?xml> declaration at the top of the HTML header. The sole purpose of this declaration is to declare the character set encoding. In the absence of -declare_xml, the output HTML will contain a <meta> tag that specifies the encoding, allowing the HTML to pass most validators. The default for -declare_xml is false."
      ist dabei das, was neu hinzugekommen ist.

      Ich bekomme leider einen Fehler ("unknown value"), wenn ich -declare_xml mit
        version="1.0" encoding="iso-8859-1"
      zu füttern versuche.

      Grüße aus Berlin

      Christoph S.

      1. Hi,
        also für mich geht daraus hervor, dass -declare_xml boolean sein soll ("The default for -declare_xml is false."). Oder?
        Der Yeti

        --
        Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
        Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
        Und bin so klug als wie zuvor!
        sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
        [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
        1. Hi!

          also für mich geht daraus hervor, dass -declare_xml boolean sein soll ("The default for -declare_xml is false."). Oder?

          Ja, genau. Also in deinem Falle 'true', Christoph ;-)

          Grüße,
          Fabian St.

        2. hallo Yeti,

          also für mich geht daraus hervor, dass -declare_xml boolean sein soll ("The default for -declare_xml is false."). Oder?

          Nein, nicht zwingend. Übrigens hab ich natürlich auch schon mit "true" probiert, so weit reicht mein Verständnis auch ;-)
          Aber es gibt eben leider einen Fehler. Egal, was ich angebe.

          Die Alternative wäre, auf eine XML-Deklaration zu verzichten und meta-tags z.B. für den Zeichensatz generieren zu lassen. Ich bin da noch am Herumspielen, schließlich soll das, was herauskommt, ja auch valide werden, wie es das mit Perl 5.8.6 bisher war. Aber es kann ja sein, daß sich da schon mal jemand durchgewühlt hat.

          Grüße aus Berlin

          Christoph S.

          1. Hi,

            Nein, nicht zwingend. Übrigens hab ich natürlich auch schon mit "true" probiert, so weit reicht mein Verständnis auch ;-)

            Okay. Wollte dir auch nix unterstellen. ;-)

            Was ist, wenn du das einfach selbst ausgibst mittels print??

            Also ich habe bei meinen kurzen Perl-Abstechern eigentlich immer alles selber geschrieben, weil ich genau über sowas gerne die Kontrolle habe.

            Der Yeti

            --
            Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
            Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
            Und bin so klug als wie zuvor!
            sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
            [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
            1. hallo Yeti,

              Was ist, wenn du das einfach selbst ausgibst mittels print?

              Funktioniert zwar, ist aber ein Stilbruch ...

              Grüße aus Berlin

              Christoph S.

          2. Hi!

            also für mich geht daraus hervor, dass -declare_xml boolean sein soll ("The default for -declare_xml is false."). Oder?

            Nein, nicht zwingend. Übrigens hab ich natürlich auch schon mit "true" probiert, so weit reicht mein Verständnis auch ;-)
            Aber es gibt eben leider einen Fehler. Egal, was ich angebe.

            Was hast du genau probiert? Ich habe mir gerade mal perl-core/CGI »emerged« und dann folgendes probiert:

              
            #!/usr/bin/perl -w  
              
            use strict;  
            use CGI qw/:standard/;  
            print header();  
            print start_html(-encoding=>'utf-8', -declare_xml=>'true' );  
            print end_html();  
            
            

            Das ergibt dann folgende Ausgabe:

            <?xml version="1.0" encoding="utf-8"?>
            <!DOCTYPE html
                    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
            <head>
            <title>Untitled Document</title>
            </head>
            <body>
            </body>
            </html>

            Das ist doch nun so, wie du es haben wolltest, oder?

            Grüße,
            Fabian St.

            1. hallo Fabian,

              #!/usr/bin/perl -w

              use strict;
              use CGI qw/:standard/;
              print header();
              print start_html(-encoding=>'utf-8', -declare_xml=>'true' );
              print end_html();

                
              Ups. Man muß doch die Doku richtig lesen. Ich habe die ganze Zeit an "header()" rumgebastelt und sehe jetzt an deinem Beispiel, daß das nach "start\_html()" gehört. Sowas Doofes aber auch ;-)  
                
              
              > Das ist doch nun so, wie du es haben wolltest, oder?  
                
              Ja, genau das kommt jetzt wieder raus, auch wenn ich nicht utf-8 nehme, aber das spielt ja keine Rolle.  
                
                
              Grüße aus Berlin  
                
              Christoph S.
              
              -- 
              <mailto:christoph.schnauss@berlin.de>  
              <http://www.christoph-schnauss.de>  
                
              ss:| zu:) ls:& fo:) va:) sh:| rl:|