Frank Scharffenberg: CGI.pm -» print zum Browser geht nicht

Mahlzeit alle miteinander!

Ich habe ein Problem mit dem Modul CGI.pm. Ich habe es wie folgt eingebunden:
use CGI qw(:standard);      
Im Script will ich die Funktion param nutzen:

Übergabeparameter lesen und aufbereiten

$tag      = param('tag');
$monat    = param('monat');
$jahr     = param('jahr');
.
.
.
#@html enthält komplette HTML-Seite incl. content-type
print @html;
.
.
.

Das funktioniert, nur kommen Ausgaben, die per print zum Browser gesendet werden sollen, dort nicht an. Der Server sendet "CGI script /cgi-bin/admin.pl returned nothing" an den Browser. Über schreibt CGI.PM die Funktion 'print' und muß ich nun was anderes tun? Der Inhalt von @html ist korrekt (incl. content-type). Der gleiche Effekt triff auch auf wenn ich CGI.pm so nutze:
#neues Object
$query = new CGI;

Übergabeparameter lesen und aufbereiten

$tag      = $query -> param('tag');
$monat    = $query -> param('monat');
$jahr     = $query -> param('jahr');

Das ganze (Server und Perl) ist lokal installiert unter WinNT. Sonstige CGI's laufen.
CGI.pm Version 2.56
Perl 5.004

  1. Hallo, versuchs erst einmal so
    use CGI;
    $qery = new CGI;
    print $query -> header; # Content-Type
    print @html; # die HTML-Seite

    hier noch eine gute Adresse http://www.oreilly.de/catalog/perlmodger/manpage/cgi.htm; Rolf

    1. Hallo Rolf!

      Besten Dank! Das wars:
      print $query -> header; # Content-Type:
      Es geht!

      Gruß Frank

      P.S.
      Interessiert mich aber trotzdem mal, warum es so nicht geht:
      Hier die ersten paar Zeilen aus @html, wenn ich das 'printe', gehts nicht. Jetzt lasse ich content-type weg und nutze die o.g. Zeile.

      Content-type: text/html

      <HTML>
      <HEAD>
      <STYLE TYPE='text/css'>
      .Text0 {
        font-family: Arial, Helvetica;
      }
      .Text1 {
        font-family: Arial, Helvetica;
        font-weight: bold;
        font-size: 18px;
      }
      .
      .
      .

      1. Hallo Rolf!

        Besten Dank! Das wars:
        print $query -> header; # Content-Type:
        Es geht!

        Gruß Frank

        P.S.
        Interessiert mich aber trotzdem mal, warum es so nicht geht:

        Hallo, der Header muss vorher zum Browser geschickt werden, d.h., erst der Header, dann das Dokument.

        Viele Grüße, Rolf

        1. Hallo, der Header muss vorher zum Browser geschickt werden, d.h., erst der Header,
          dann das Dokument.

          Hallo Rolf!

          ganz zum Anfang hatte ich's so:

          use CGI qw(:standard);      
          .
          .
          .

          Übergabeparameter lesen und aufbereiten

          $tag      = param('tag');
          $monat    = param('monat');
          $jahr     = param('jahr');
          .
          .
          &msgreg(@html);
          .
          .
          sub msgreg {
          #template lesen
          open (FILE,"$regresultpath") die "Can't Open $regresultpath!\n";
          @lines = <FILE>;
          close(FILE);
          print "Content-type: text/html\n\n"; #header
          #result ausgeben und bei '<!--begin->' @html einfügen
          foreach $line (@lines) {
              if ($line =~ /<!--begin-->/) {
                 print @_;
              } else {
                 print $line;
              }
          }
          }

          ging aber auch nicht...   :-(
          jedenfalls "offline" auf meinem PC. Online ist dieses Script nämlich so im Einsatz (UNIX, Apache, Perl5.004).

          Gruß Frank