Thread Umbau eines Skript mit der CGI-Bibliothek (13 answers)
Opened by Michael47 at 2016-01-24 13:44

GwenDragon
 2016-01-25 10:07
#183626 #183626
User since
2005-01-17
14544 Artikel
Admin1
[Homepage]
user image
Du wirst dich ja schon mit HTML befasst haben im Rahmen deiner Ausbildung.

HTML-Elemente können auch mittels der Bibliothek CGI erzeuget werden, siehe: CPAN:CGI::HTML::Functions
Bitte auch die Doku ansehen beim üben!

Probieren wir es mal.
Ein Hinweis wie das Modul CGI arbeitet.
Start- und End-Elemente von HTML werden dargestellt durch start_ELEMENTNAME und end_ELEMENTNAME. Komplette HTML-Blöcke/Elemente ohne das start_ oder end_.

Der Anfang des HTML-Gerüsts wird vereinfacht ohne das Modul oft so ausgegeben
Code (perl): (dl )
1
2
3
4
print <<HTML;
<html>
<body>
HTML
Mit Modul lässt sich auch so bewerkstelligen
Code (perl): (dl )
print $cgi->start_html;


Das Ende eines HTML-Blocks
Code (perl): (dl )
1
2
3
4
print <<HTML;
</body>
</html>
HTML
kann ähnlich durch
Code (perl): (dl )
print $cgi->end_html;
erstellt werden.

Ein P-Element mit Text kann so erzeugt werden
Code (perl): (dl )
print $cgi->p("Das ist ein Text");

wird zu
Code: (dl )
<p>Das ist ein Text</p>

Das ist auch gleichbedeutend mit
Code (perl): (dl )
print $cgi->start_p,"Das ist ein Text", $cgi->end_p;


Formatierungen innerhalb von HTML-Elementen wie I, B, EM etc. gehen auch.
Code (perl): (dl )
print "Das HTML-Element I ist ", $cgi->i("Kursiv"), " und B ist ", $cgi->b("Fett");


Zur Erzeugung von verschachtelten HTML-Elementen lassen sich auch diese Funktionen so schachteln:
Code (perl): (dl )
1
2
3
4
5
print $cgi->div(
  $cgi->p("Ein Absatz mit ",$cgi->i("kursivem"), " Text"),  # Absatz 1 mit diversem Text
  $cgi->br(),                                             # ein Zeilenumbruch
  $cgi->p("2. Absatz")  # Absatz 2 mit diversem Text
);

erzeugt dann
Code: (dl )
<div><p>Ein Absatz mit  <i>kursivem</i>  Text</p> <br /> <p>2. Absatz</p></div>


Wenn Elemente noch Attribute haben, müssen diese vor dem Element-Inhalt in geschweiften Klammern stehen, damit das Modul die einfügt. Attributnamen und Attributwerte werden zur besseren Erkennung der Zusammengehörigkeit mit => getrennt.
Ein HTML-Element P mit einem Attribut ID mit dem Wert erstezeile kann also so werzeugt werden:
Code (perl): (dl )
$cgi->p({ id=>"erstezeile }, "Text Text");

Mehrere Attribute wenden Liste durch Komma getrennt.
Code (perl): (dl )
$cgi->p({ id=>"erstezeile, name=>"ez", style=>"font-size:200%" }, "Text Text");

ergibt dann:
Code (perl): (dl )
<p id="erstezeile" name="ez" style="font-size:200%">Text Text</p>



Nun zu Formularen wie in https://metacpan.org/pod/distribution/CGI/lib/CGI/... gezeigt.
Also fangen wir mal an (und schrieben es mehrzeilig zur besseren Kommentierung).
Ein Formular beginnt also mit start_form, braucht aber noch ein paar Parameter um komplett zu sein.
Code (perl): (dl )
1
2
3
4
5
print start_form(
   -method=>"POST",  # Übersendung der Daten mit HTTP-Methode POST
   -action=>"#"      # sendet an das gerade aufgerufene Perl-Programm selbst
);
# dazwischen weitere Ausgaben
und endet mit
Code (perl): (dl )
print end_form;



Etwas unstrukturiert beschrieben, aber ich bin auch nicht deine Dozentin und kann nich so eben mal ein Perl-CGI-HTML-Lernskript aus dem Pullover schütteln. ;)
Musst du bei Problemen hier weiter fragen.

Dann probier mal. Viel Erfolg.
Last edited: 2016-01-25 10:17:56 +0100 (CET)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Umbau eines Skript mit der CGI-Bibliothek