m0ritz brandt: CGI - HTML einfacher und POST Codes

Wenn von einem CGI Script eine
dynamisch erzeugte HTML Datei ausgegeben wird
kann man dies tuen indem man einen
HTTP Header voranschickt und dann nach Kindergartenprinzip
immer print""; davorschreibt!
Geht das nicht auch einfacher?
z.B dass man dem script sagt vo die print Anweisung anfängt und
wo sie aufhört?
Ausserdem wäre es nett wenn jemand die berühmten Post-Codes,

$value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/<!--(.|\n)*-->//g;

entschlüsseln koennte! (wenn auch nur annähernd)!

Danke schon mal im voraus!
m0b

  1. hi!

    Wenn von einem CGI Script eine
    dynamisch erzeugte HTML Datei ausgegeben wird
    kann man dies tuen indem man einen
    HTTP Header voranschickt und dann nach Kindergartenprinzip
    immer print""; davorschreibt!
    Geht das nicht auch einfacher?

    Doch, wenn ich dich richtig verstanden habe schon:

    print << "EOT";
    Content-Type: text/html

    hier steht die html-ausgabe...
    EOT

    z.B dass man dem script sagt vo die print Anweisung anfängt und
    wo sie aufhört?

    s.o.

    Ausserdem wäre es nett wenn jemand die berühmten Post-Codes,

    $value =~ tr/+/ /;

    Sucht nach "+" in $value und ersetzt es durch ein Leerzeichen. Allerdings fehlt bei dir am Ende (vor dem ;) ein Parameter, damit alle "+"-Zeichen in $value ersetzt werden! Zur Zeit wird nur das erste gefunden.

    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

    Sucht in $value nach "%" gefolgt von zwei Zeichen aus den Bereichen a-f, A-F und 0-9, also nach hexadezimalen Angaben. Das ganze wird durch "pack("C", hex($1))" in ein lesbares Zeichen umgewandelt. "$1" ist dabei die Rückreferenzierung auf den gefundenen Ausdruck.

    $value =~ s/<!--(.|\n)*-->//g;

    Such in $value nach "<!--", dann entweder einem Zeichen (".") oder Zeilenvorschub ("\n"), das/der beliebig oft vorkommt ("*"), wieder direkt gefolgt von "-->", und ersetze das Gefundene durch gar nichts (=löschen). Auf den ersten Blick sieht es so aus, als würden damit HTML-Kommentare entfernt.

    entschlüsseln koennte! (wenn auch nur annähernd)!

    Ich hoffe, das hat geholfen ;)

    bye, Frank!

    1. $value =~ tr/+/ /;

      Sucht nach "+" in $value und ersetzt es durch ein Leerzeichen. Allerdings fehlt bei dir am Ende (vor dem ;) ein Parameter, damit alle "+"-Zeichen in $value ersetzt werden! Zur Zeit wird nur das erste gefunden.

      bye, Frank!

      Hi Frank!
      Danke erstmal!
      Aber:
      "+" in CGi bedeutet ja gleich leerzeichen!!
      (so ungefähr)
      Mein script findet aber alle leerzeichen!!
      Warum, wenn es deiner Meinung nach ein Fehler ist?
      m0b

      1. hi!

        $value =~ tr/+/ /;

        Sucht nach "+" in $value und ersetzt es durch ein Leerzeichen. Allerdings fehlt bei dir
        am Ende (vor dem ;) ein Parameter, damit alle "+"-Zeichen in $value ersetzt werden!
        Zur Zeit wird nur das erste gefunden.
        Aber:
        "+" in CGi bedeutet ja gleich leerzeichen!!
        (so ungefähr)
        Mein script findet aber alle leerzeichen!!
        Warum, wenn es deiner Meinung nach ein Fehler ist?

        Sorry, ich hab das "tr" übersehen. Wenn da ein "s" gestanden hätte, dann hätte der Parameter gefehlt, so funktioniert es natürlich auch. Aber "tr" findet auch keine regulären Ausdrücke, sondern nur einzelne Zeichen.

        bye, Frank!

        1. Sorry, ich hab das "tr" übersehen. Wenn da ein "s" gestanden hätte, dann hätte der Parameter gefehlt, so funktioniert es natürlich auch. Aber "tr" findet auch keine regulären Ausdrücke, sondern nur einzelne Zeichen.

          bye, Frank!

          Aber was bedeutet denn das tr oder das s!
          Denn der Code war abgeschrieben,
          und ich moechte verstehen was ich schreibe!!
          m0b

          1. hi!

            Sorry, ich hab das "tr" übersehen. Wenn da ein "s" gestanden hätte, dann hätte der
            Parameter gefehlt, so funktioniert es natürlich auch. Aber "tr" findet auch keine regulären
            Ausdrücke, sondern nur einzelne Zeichen.
            Aber was bedeutet denn das tr oder das s!
            Denn der Code war abgeschrieben,
            und ich moechte verstehen was ich schreibe!!

            s/// kann nach regulären Ausdrücken suchen und diese ersetzen. tr/// such dagegen nur nach einzelnen Zeichen und ersetzt diese jeweils durch ein anderes.

            bye, Frank!