archive-de.com » DE » E » EKIWI.DE

Total: 422

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • SELFHTML: Perl / Perl-Module / Standardmodule von Perl
    Methoden mit dem poll Systembefehl zu arbeiten IO Seekable Stellt objektorientierte Front Ends für die Perl Funktionen seek und tell bereit IO Select Bietet eine objektorientierte Verwaltung von Ein Ausgabe Handles an und enthält Funktionen zum Erzeugen Löschen und Überprüfen von Handles IO Socket Bietet eine objektorientierte Verwaltung von Ein Ausgabe Sockets für Prozesskommunikation über ein Netzwerk bevorzugt TCP IP an und enthält Funktionen zum Erzeugen Löschen und Abfragen der Sockets PerlIO Erlaubt Ein Ausgabe Operationen mit kodierten Daten Sie können dann mit den Daten arbeiten als wären sie nicht kodiert PerlIO encoding Erlaubt das transparente Arbeiten mit Dateien deren Inhalt mit einem Verfahren wie UTF 8 kodiert wurde Sie können dann mit den Daten arbeiten als wären sie nicht kodiert PerlIO scalar Erlaubt es mit einem Skalar so zu arbeiten als ob er eine Datei wäre PerlIO via Ein Hilfsmodul zum Arbeiten mit Filtern für die Ein Ausgabe von Dateien mit kodiertem Inhalt PerlIO via QuotedPrint Erlaubt das transparente Arbeiten mit Dateien deren Inhalt im Quoted Printable Format vorliegt Sie können dann mit den Daten arbeiten als wären sie nicht kodiert Module für Datum und Zeit Modul Syntax für Einbindung Aufgabe Time HiRes Ersetzt interne Funktionen wie time und sleep und gibt ihnen die Möglichkeit mit Millisekunden umzugehen Time Local Stellt Umkehrfunktionen für die Perl Funktionen gmtime und localtime zur Verfügung Time gmtime Überschreibt die Perl Funktion gmtime und ermöglicht einen objektorientierten Zugriff auf die Daten Time localtime Überschreibt die Perl Funktion localtime und ermöglicht einen objektorientierten Zugriff auf die Daten Module für Datenbankzugriffe Modul Syntax für Einbindung Aufgabe AnyDBM File Basismodul für die übrigen Module dieser Abteilung DB File Erlaubt den Zugriff auf Datenbankdateien von Berkeley DB Version 1 x GDBM File Erlaubt den Zugriff auf GDBM Dateien über die tie Funktion die eine Variable an eine Objektklasse bindet NDBM File Erlaubt den Zugriff auf NDBM Dateien über die tie Funktion die eine Variable an eine Objektklasse bindet ODBM File Erlaubt den Zugriff auf ODBM Dateien über die tie Funktion die eine Variable an eine Objektklasse bindet SDBM File Erlaubt den Zugriff auf SDBM Dateien über die tie Funktion die eine Variable an eine Objektklasse bindet Module für Prozesskommunikation Modul Syntax für Einbindung Aufgabe IPC Msg Ermöglicht es Nachrichtenwarteschlangen Message Queues und zugehörige Nachrichten für Unix System V zu stellen IPC Open2 Öffnet einen Unix Prozess zum Lesen und Schreiben IPC Open3 Öffnet einen Unix Prozess zum Lesen Schreiben und für Fehlerbehandlung IPC Semaphore Ermöglicht es die Semaphore Funktion von Unix System V zu nutzen IPC SysV Stellt IPC Konstanten von Unix System V bereit Thread Ermöglicht das Arbeiten mit Multithreading Teile eines Scripts werden separat in eigenen Threads ausgeführt während die normale Ausführung des Scripts weiterläuft Thread Queue Stellt eine Warteschlange in Form einer Liste bereit die Threads erlaubt Variablen hinzuzufügen oder zu entfernen Thread Semaphore Ermöglicht die Anwendung der Semaphore Technik zwischen Threads Thread Signal Startet einen speziellen Signal Handler Thread an den für den laufenden Prozess ankommende Signale weitergeleitet werden sodass ein Script das durch Multithreading stark beschäftigt ist Signale in einem Zwischenspeicher halten kann bis eine Abarbeitung möglich ist Thread Specific Generiert für einen Thread einen eindeutigen Schlüssel Module für Variablenbindung Modul Syntax für Einbindung Aufgabe Tie Array Bindet eine Liste an eine Objektklasse Tie File Ermöglicht es die Zeilen einer Datei über einen Array anzusprechen Tie Handle Bindet ein Handle an eine Objektklasse Tie Hash Bindet einen Hash an eine Objektklasse Tie Memoize Fügt die Daten zu einem Hash hinzu wenn Sie benötigt werden Tie RefHash Ermöglicht Referenzen als Schlüssel für Hashes Tie Scalar Bindet einen Skalar an eine Objektklasse Tie SubstrHash Ermöglicht einen Hash artigen Zugriff auf eine Liste fester Länge Module für Modulverwaltung und objektorientierte Programmierung Modul Syntax für Einbindung Aufgabe Class ISA Stellt die Werte der ISA Listen sämtlicher eingebundener Basisklassen bereit Class Struct Erzeugt Datenstrukturen nach dem Vorbild von struct in C Exporter Ermöglicht Modulen genau festzulegen welche Variablen und Funktionen in den Namensraum eines einbindenden Scripts importiert werden NEXT Stellt eine Pseudoklasse namens NEXT bereit mit der Sie beim Aufruf von Methoden von Klassen Methoden gleichen Namens aus den Basisklassen mit aufrufen können UNIVERSAL Stellt die Basis Objektklasse für objektorientiertes Programmieren in Perl dar Erlaubt das Überprüfen von Referenzen und Methoden bei beliebigen Objekten Module für CGI Scripts Modul Syntax für Einbindung Aufgabe CGI Kann Formulardaten parsen und ermöglicht dadurch die bequeme Weiterverarbeitung von Formulardaten Stellt außerdem verschiedene Mittel bereit um HTML Ausgaben an den Browser zu senden CGI Apache Variante des CGI Moduls die speziell für den Einsatz unter dem Apache Webserver optimiert war Das Modul ist inzwischen veraltet CGI Carp Ermöglicht es auftretende Fehler und Laufzeitprobleme auch an die Standardausgabe und damit an den auf Ausgabe wartenden Browser zu senden CGI Cookie Erlaubt das Setzen und Auslesen von Netscape bzw HTTP1 1 kompatiblen Cookies auf dem Rechner des Anwenders Mit Hilfe von Cookies lassen sich Informationen auf dem Anwenderrechner speichern die beim nächsten Aufruf wieder ausgelesen werden können Stichwort mitdenkende Web Seiten CGI Fast Schnittstelle zum Fast CGI Standard durch den CGI Scripts deutlich schneller werden weil sie als Prozesse dauerhaft im Arbeitsspeicher des Server Rechners gehalten werden CGI Push Schnittstelle zum Server Push also dem Senden von Inhalten an den Browser ohne dessen explizite Anfrage Web Seiten können auf diese Weise in bestimmten Zeitintervallen automatisch neu gesendet werden was bei schnell wechselnden Inhalten sinnvoll ist CGI Switch Probiert selbstständig ein neues CGI Objekt anzulegen und zwar wenn möglich mit CGI Apache ansonsten mit dem normalen CGI Modul Das Modul ist inzwischen veraltet Module für Internetfunktionen Modul Syntax für Einbindung Aufgabe Net Cmd Basisklasse zur Kommunikation mit befehlsbasierten Internet Protokollen wie FTP und SMTP Net Domain Ermittelt den Host und Domainnamen des aktuellen Rechners Net FTP Klasse zur Kommunikation mit FTP Servern Net Netrc Objektorientierter Zugriff auf die netrc Datei des aktuellen Benutzers Net NNTP Klasse zur Kommunikation mit NNTP Servern News Net Ping Überprüft die Erreichbarkeit eines Host Rechners im Internet mit der dafür üblichen Ping Funktion Net POP3 Klasse zur Kommunikation mit POP3 Servern

    Original URL path: http://html.ekiwi.de/perl/module/standardmodule.htm (2016-04-25)
    Open archived version from archive


  • SELFHTML: Perl / Funktionsreferenz / Funktionen für Ein-/Ausgabe und Lesen/Schreiben von Daten
    es sich um eine Kopfzeilendefinition handelt Im Beispiel wird die Kopfzeile mit zwei aus Sternchen bestehenden Linien und die dazwischenstehende aktuelle Seitenzahl formatiert Im weiteren Verlauf von Beispiel 3 sehen Sie wie die Datei in einer while Schleife zeilenweise in eine Variable namens Zeile eingelesen wird Diese Variable wird ebenfalls in der Schleife jeweils ausgegeben Für die Formatierung der Ausgabe ist das Format Konstrukt mit dem Namen STDOUT verantwortlich Dort wird die Variable Zeile in der gewünschten Form ausgegeben Beachten Sie Die Variable Zeile muss im obigen Beispiel global deklariert werden Daher die Anweisung use vars qw Zeile zu Beginn getc nächstes Zeichen lesen Liest ein Zeichen aus einer zuvor geöffneten Datei und positioniert den Dateizeiger um ein Zeichen weiter Erwartet als Parameter 1 das Datei Handle Beispiel eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title n print head body pre n open DATEI usr texte wichtig txt my Bytes 0 while eof DATEI my Zeichen getc DATEI print Zeichen Bytes close DATEI print pre strong Bytes Zeichen gelesen strong n print body html n Erläuterung Das Beispiel erzeugt HTML Code für den aufrufenden Web Browser Dabei wird auch mit der Funktion open eine Textdatei usr texte wichtig txt geöffnet Die geöffnete Datei wird in einer while Schleife Zeichen für Zeichen eingelesen bis das Dateiende das mit der Funktion eof abgefragt wird erreicht ist Die eingelesenen Zeichen werden ausgegeben Außerdem wird der Skalar Bytes bei jedem eingelesenen Zeichen um 1 erhöht Auf diese Weise wird nebenbei die Anzahl der eingelesenen Zeichen ermittelt Am Ende wird diese Anzahl mit ausgegeben open Datei öffnen Öffnet eine Datei zum Lesen und oder Schreiben oder auch zum Ausführen Auch Binärdateien werden mit dieser Funktion geöffnet Erwartet als Parameter 1 den Namen des Datei Handles frei wählbar und 2 den Pfadnamen der zu öffnenden Datei entweder als absolute Pfadangabe oder als relative Pfadangabe aus Sicht des aktuellen Verzeichnisses wenn das aktuelle Verzeichnis unbekannt ist empfiehlt es sich mit Hilfe der Funktion chdir in ein bestimmtes Verzeichnis zu wechseln Als Trennzeichen für Verzeichnispfade können Sie den einfachen Schrägstrich verwenden auch wenn das Script auf einem Windows Rechner laufen soll Perl setzt diese Syntax je nach Installationsumgebung intern um Für den Pfadnamen der zu öffnenden Datei können Sie auch Variablen einsetzen URIs dürfen Sie jedoch nicht angeben Unmittelbar vor dem Pfad namen der zu öffnenden Datei notieren Sie mit Hilfe der Zeichen oder außerdem wie die Datei geöffnet werden soll Wenn Sie keine dieser Angaben machen wird die Datei nur zum Lesen geöffnet Folgende Angaben sind erlaubt datei dat bedeutet Datei datei dat nur zum Lesen öffnen Die Datei muss existieren ansonsten gibt es einen Fehler datei dat bedeutet Datei datei dat zum Schreiben von Daten öffnen Wenn die Datei bereits existiert wird ihr bisheriger Inhalt überschrieben Wenn die Datei noch nicht existiert wird sie automatisch angelegt datei dat bedeutet Datei datei dat zum Schreiben von Daten öffnen Wenn die Datei bereits existiert wird der neue Inhalt an den alten Inhalt angehängt d h der alte Inhalt wird nicht gelöscht Wenn die Datei noch nicht existiert wird sie automatisch angelegt datei dat bedeutet Datei datei dat zum Lesen und zum Schreiben von Daten öffnen Die Datei muss existieren ansonsten gibt es einen Fehler datei dat bedeutet Datei datei dat zum Lesen und zum Schreiben von Daten öffnen Wenn die Datei bereits existiert wird ihr bisheriger Inhalt überschrieben Wenn die Datei noch nicht existiert wird sie automatisch angelegt datei dat bedeutet Datei datei dat zum Lesen und zum Schreiben von Daten öffnen Wenn die Datei bereits existiert wird der neue Inhalt an den alten Inhalt angehängt d h der alte Inhalt wird nicht gelöscht Wenn die Datei noch nicht existiert wird sie automatisch angelegt datei bedeutet Datei datei ist eine ausführbare Programmdatei oder ein Shell Befehl Das Programm bzw der Befehl werden ausgeführt Aus Unix Sicht wird dabei eine Pipe zu dem Programm bzw Befehl geöffnet datei bedeutet Datei datei ist eine ausführbare Programmdatei oder ein Shell Befehl Das Programm bzw der Befehl werden ausgeführt Aus Unix Sicht wird dabei eine Pipe von dem Programm bzw dem Befehl geöffnet Wenn die Datei geöffnet werden kann gibt die Funktion open den Wert true zurück andernfalls den Wert undef Beispiel usr bin perl w use strict open DATEI tmp server cfg die Datei nicht gefunden my Zeilen DATEI close DATEI my NeueZeilen foreach Zeilen s push NeueZeilen if s n open DATEI tmp server cfg die Datei nicht gefunden print DATEI NeueZeilen close DATEI Erläuterung Das Beispiel zeigt wie Sie eine Datei öffnen einlesen und schließen dann wieder öffnen und den inzwischen verarbeiteten Datenbestand in die Datei zurückschreiben Es handelt sich um eine angenommene Konfigurationsdatei in der viele Zeilen hinter dem eigentlichen Konfigurationsbefehl Kommentare enthalten die mit beginnen Im Beispiel wird die Datei so verarbeitet dass alle diese Kommentarzeilen gelöscht werden Zunächst wird die open Funktion aufgerufen Dabei wird die gewünschte Datei zum Lesen geöffnet Die Datei wird dann in den Array Zeilen eingelesen in jedem Eintrag von Zeilen steht anschließend je eine Zeile der Datei Nach dem Einlesen wird die Datei mit close wieder geschlossen Diese drei Befehle zum Öffnen Einlesen und Schließen sind typisch Im obigen Beispiel werden die eingelesenen Zeilen anschließend der Reihe nach in einer foreach Schleife verarbeitet Dabei wird in jeder Zeile der Kommentarteil entfernt Dies geschieht mit Hilfe eines regulären Ausdrucks zum Suchen Ersetzen s g Dann wird die aktuell verarbeitete Zeile mit push dem Array NeueZeilen hinzugefügt aber nur dann wenn die Zeile aus etwas anderem besteht als nur aus Leerraumzeichen mit abschließendem Newline Zeichen Auch dazu wird wieder ein geeigneter regulärer Ausdruck angewendet Schließlich wird die Datei wieder geöffnet diesmal jedoch zum Schreiben genauer gesagt zum Überschreiben des bisherigen Inhalts Mit Hilfe der print Funktion wird der Array NeueZeilen in die Datei geschrieben Anschließend wird die Datei geschlossen Beachten Sie Wenn Fehler beim Öffnen von wichtigen Dateien passieren ist es meistens sinnvoll das Script sofort zu beenden Dazu dient die Funktion die die auch im obigen Beispiel zum Einsatz kommt In den meisten Fällen ist es sinnvoll eine geöffnete Datei sofort wieder zu schließen sobald Sie sie nicht mehr zum Lesen oder Schreiben brauchen Dadurch geben Sie Betriebssystem Ressourcen frei und andere Programme oder Prozesse können ebenfalls wieder auf die Datei zugreifen wenn Sie die Datei zuvor gesperrt hatten opendir Verzeichnis öffnen Öffnet ein Verzeichnis zum Beispiel um es auszulesen Dabei vergeben Sie ein Verzeichnishandle über das Sie auf das Verzeichnis zugreifen können Erwartet als Parameter 1 den Namen des Verzeichnishandles frei wählbar und 2 den Pfadnamen des zu öffnenden Verzeichnisses entweder als absolute Pfadangabe oder als relative Pfadangabe aus Sicht des aktuellen Verzeichnisses wenn das aktuelle Verzeichnis unbekannt ist empfiehlt es sich mit Hilfe der Funktion chdir in ein bestimmtes Verzeichnis zu wechseln Gibt TRUE zurück wenn das Verzeichnis geöffnet werden konnte Wenn ein Fehler aufgetreten ist wird dieser in der Variablen gespeichert Beispiel eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Verzeichnis daten web opendir DIR Verzeichnis die Verzeichnis my Eintraege readdir DIR closedir DIR print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title head body n foreach Eintraege print br n print body html n Erläuterung Im Beispiel wird in dem Skalar Verzeichnis der Pfad eines Verzeichnisses gespeichert daten web Beachten Sie dass die Verzeichnisse des Pfades durch einfache Schrägstriche getrennt sind nicht durch Backslashes wie unter DOS Windows üblich Verwenden Sie die Syntax mit den einfachen Schrägstrichen auch dann wenn Perl bei Ihnen unter Windows läuft Wenn Sie in einer Windows Umgebung ein anderes als das aktuelle Laufwerk ansprechen möchten setzen Sie einfach den Laufwerksbuchstaben mit Doppelpunkt davor also beispielsweise c temp Mit der Funktion opendir wird das Verzeichnis geöffnet DIR ist ein selbst vergebener Name für das Verzeichnishandle Ferner bekommt die Funktion den Skalar übergeben in dem das gewünschte Verzeichnis gespeichert ist Falls das Verzeichnis nicht geöffnet werden kann endet das Script durch Aufruf der Funktion die Das obige Beispiel nutzt das geöffnete Verzeichnis um mit Hilfe der Funktion readdir den Verzeichnisinhalt in eine Liste Eintraege einzulesen Anschließend wird das Verzeichnis durch Aufruf der Funktion closedir geschlossen Das Beispiel gibt dann HTML Code mit der Liste der Verzeichniseinträge aus Beachten Sie Es werden alle Verzeichniseinträge eingelesen also Dateinamen aber auch Namen von Unterverzeichnissen sowie die auf den meisten Systemen vorhandenen symbolischen Verzeichnisnamen mit einem Punkt steht für das aktuelle Verzeichnis oder zwei Punkten steht für das Elternverzeichnis print Daten ausgeben Schreibt Daten auf die Standardausgabe oder in einen geöffneten Ausgabekanal also etwa in eine Datei Die Daten können eine einzelne Zeichenkette oder eine Liste von Zeichenketten sein Innerhalb solcher Zeichenketten können auch Variablen vorkommen also einzelne Skalare aber auch ganze Listen oder Hashes Perl erkennt die Variablen und schreibt ihren aktuellen Wert an die entsprechende Stelle Diese Funktion wird in CGI Scripts sehr oft verwendet um HTML Code auszugeben Erwartet als Parameter 1 Datei Handle Optionale Angabe zum Ausgabekanal Wenn Sie diese Angabe weglassen wird auf die Standardausgabe STDOUT geschrieben Wenn Sie mit open eine Datei geöffnet haben und in diese schreiben wollen müssen Sie das bei open vergebene Datei Handle benutzen 2 Daten Daten Ein oder mehrere Elemente Zeichenketten Zahlen usw die geschrieben werden sollen Gibt true zurück wenn Perl die Daten erfolgreich schreiben konnte Beispiel 1 eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title head body n print table border 1 n tr td strong Umgebungsvariable strong td td strong Aktueller Wert strong td tr n my i 0 my Eintrag foreach Eintrag ENV if i 0 print tr td Eintrag td n else print td Eintrag td tr n if i 0 i 1 else i 0 print table n body html n Erläuterung Das Beispiel gibt alle CGI Umgebungsvariablen des Webservers aus und zwar sauber als HTML Tabelle formatiert Dazu werden die Einträge des vordefinierten Hashes ENV in einer foreach Schleife abgearbeitet und in die HTML Tabelle geschrieben Die entsprechenden HTML Ausgaben werden mit Hilfe von print Befehlen geschrieben Im letzten der print Befehle können Sie sehen wie man mehrere Zeichenketten durch Kommata getrennt hintereinander notieren kann In den print Befehlen innerhalb der Schleife können Sie sehen wie eine Variable im Beispiel der Skalar Eintrag innerhalb einer auszugebenden Zeichenkette notiert ist An der entsprechenden Stelle wird dann der jeweils aktuelle Wert von Eintrag ausgegeben Wenn Sie viele print Befehle hintereinander notieren müssen können Sie auch zu einer für Sie besser lesbaren Lösung greifen Beispiel 2 eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print ENDE html head title Titel title head body bgcolor FFFFCC h1 Ganz normales HTML h1 p Perl und HTML sind manchmal wie Adam und Eva p body html ENDE Erläuterung Sie können größere Textabschnitte zum Beispiel kompletten HTML Code in einem Stück ausgeben Dazu notieren Sie hinter dem print Befehl zwei und direkt dahinter ohne Leerzeichen dazwischen den Namen eines Endbegrenzers bis zu dem alles einfach als Text ausgegeben werden soll Hinter dem frei wählbaren Namen des Endbegrenzers folgt in der Zeile des print Befehls das übliche Semikolon Am Ende des auszugebenden Textes notieren Sie in einer eigenen Zeile den Namen des Endbegrenzers dort jedoch ohne Semikolon am Ende Es hat sich eingebürgert für solche Namen von Labels Großbuchstaben zu verwenden weil die Label so im Quelltext leichter sichtbar sind Beachten Sie Bei CGI Scripts kann der Inhalt der ausgegebenen Daten auch als HTTP Befehl interpretiert werden Die Anweisung print Content type text html n n ist ein typisches Beispiel dafür Dabei wird ein einfacher HTTP Header gesendet der für die Kommunikation zwischen Server und Browser erforderlich ist Eine andere für CGI Scripts interessante Variante ist die folgende Anweisung Beispiel print Location http www selfhtml org n n Auch dabei wird ein HTTP Header ausgegeben der eine Weiterleitung zu dem angegebenen URI bewirkt Ein CGI Script das eine solche Location Anweisung enthält braucht sonst keinen weiteren HTML Code auszugeben printf Daten formatiert ausgeben Schreibt Daten auf die Standardausgabe oder in einen geöffneten Ausgabekanal also etwa in eine Datei Diese Funktion dient dazu einzelne Datenelemente formatiert auszugeben So lassen sich Dezimalzahlen beispielsweise ohne viel Umrechnung hexadezimal ausgeben oder die Ausgabe von Gleitkommazahlen mit vielen Nachkommastellen lässt sich auf eine bestimmte Anzahl Nachkommastellen trimmen Die printf Funktion in Perl entspricht im wesentlichen der printf Funktion in C Erwartet als Parameter 1 Datei Handle Optionale Angabe zum Ausgabekanal Wenn Sie diese Angabe weglassen wird auf die Standardausgabe STDOUT geschrieben Wenn Sie mit open eine Datei geöffnet haben und in diese schreiben wollen müssen Sie das bei open vergebene Datei Handle angeben 2 Formatstring eine Zeichenkette die für bestimmte auszugebende Elemente Formatbezeichner enthalten kann und zwar entsprechend der speziellen Syntax der printf Funktion Zeichen Syntax 3 Ausgabeliste ein oder mehrere Elemente auf die sich die speziellen Formatbezeichner im Formatstring beziehen Beispiel eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser my BruttoBetrag 27 95 my NettoBetrag BruttoBetrag 1 16 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title head body n printf Das im Bruttobetrag s enthaltene Netto beträgt ungerundet 2f BruttoBetrag NettoBetrag print body html n Erläuterung Das Beispiel gibt mit Hilfe der printf Funktion die beiden Variablen BruttoBetrag und NettoBetrag aus Der Wert von NettoBetrag wird rechnerisch gewonnen und stellt eine Bruchzahl mit vielen Nachkommastellen dar In der Ausgabe mit printf wird diese Zahl jedoch auf zwei Nachkommastellen reduziert ausgegeben Dazu notieren Sie in der auszugebenden Zeichenkette an der gewünschten Stelle einen Formatbezeichner Solche Formatbezeichner beginnen mit einem Prozentzeichen Dahinter folgen die Angaben zur Formatierung Die folgende Tabelle listet die möglichen Formatbezeichner und deren Formatiermöglichkeiten auf Syntax Bedeutung Beispiel Bewirkte Ausgabe c gibt das ASCII Zeichen eines numerischen Zeichenwertes aus Die Zahl kann z B dezimal oder hexadezimal angegeben werden printf c wie Paula 0x50 P wie Paula d gibt den Ganzzahlanteil einer Zahl in Dezimaldarstellung aus Optional kann hinter dem Zeichen und vor dem d noch eine gewünschte Anzeigebreite der Zahl angegeben werden z B 5d In Verbindung mit HTML Ausgaben ist dies jedoch nur innerhalb von Tags wie pre pre realisierbar PI 3 141592653589793 printf Der Ganzzahlanteil von PI ist d PI Der Ganzzahlanteil von PI ist 3 e gibt eine Zahl in Exponentialschreibweise aus PI 3 141592653589793 printf PI exponential e PI PI exponential 3 141593e 000 E wie e nur mit E als Exponentialzeichen statt e PI 3 141592653589793 printf PI exponential E PI PI exponential 3 141593E 000 f gibt eine Zahl mit Dezimalpunktdarstellung aus Die Zahl nach dem Punkt ist die gewünschte Anzahl Nachkommastellen für die Ausgabe Automatisch gerundet wird dabei nicht Preis 99 printf Der Preis beträgt 2f Preis Der Preis beträgt 99 00 g gibt eine Zahl automatisch in Exponentialschreibweise wie bei e oder in Dezimalpunktdarstellung wie bei f aus abhängig von der Beschaffenheit der Zahl Zahl1 100 Zahl2 10000000000000000 printf Die Zahlen g und g Zahl1 Zahl2 Die Zahlen 100 und 1e 016 G wie g nur mit E als Exponentialzeichen statt e Zahl 10000000000000000 printf Die Zahl lautet G Zahl Die Zahl lautet 1E 016 o gibt eine Zahl in oktaler Schreibweise aus ansonsten wie u Das Oktalsystem kennt nur Ziffern von 0 bis 7 Zahl 100 printf die Zahl lautet oktal o Zahl Die Zahl lautet oktal 144 u gibt eine Zahl als unsigned integer also als positive Ganzzahl aus Wenn die Zahl negativ ist gibt Perl sie als die Differenz von der höchsten möglichen Integerzahl 4294967296 und der Zahl aus Zahl1 100 Zahl2 100 printf Die Zahlen u und u Zahl1 Zahl2 Die Zahlen sind 100 und 4294967196 s gibt eine Zeichenkette String aus printf PATH ist s ENV PATH PATH ist D PERL BIN C WINDOWS Beispielausgabe x gibt eine Zahl in hexadezimaler Schreibweise aus ansonsten wie u Das Hexadezimalsystem kennt als Ziffern 0 bis 9 und a bis f Zahl 200 printf die Zahl lautet oktal x Zahl Die Zahl lautet hexadezimal c8 X wie x nur mit A bis F als Ziffern statt a bis f Zahl 200 printf die Zahl lautet oktal X Zahl Die Zahl lautet hexadezimal C8 notieren Sie um das Formatbezeichnerzeichen also das Prozentzeichen selber auszugeben Level 100 printf wir haben d erreicht Level wir haben 100 erreicht Zusätzlich zu diesen Formatbezeichnern stehen so genannte Flags zur Verfügung mit deren Hilfe sich die Ausgabe noch feiner justieren lässt Flags müssen unmittelbar hinter dem Prozentzeichen für Formatbezeichner notiert werden Die folgende Tabelle listet mögliche Flags auf Syntax Bedeutung Beispiel Bewirkte Ausgabe blank Leerzeichen vor positiven Zahlen erzwingen Sinnvoll wenn diese in Kolonne mit anderen Zahlen stehen die auch negativ sein können Zahl1 100 Zahl2 100 printf d n d Zahl1 Zahl2 100 100 Zahlen mit erzwungener Anzeigebreite linksbündig ausrichten Voreinstellung ist rechtsbündig printf 10d Zugriffe 1234 1234 Zugriffe 0 Zahl mit erzwungener Anzeigebreite mit Nullen auffüllen falls die Zahl kleiner ist printf 010d Zugriffe 1234 0000001234 Zugriffe Hexadezimal oder Oktalzahl mit entsprechendem Bezeichner für die übliche Schreibweise versehen printf 100 Hex x 100 Okt o 100 100 100 Hex 0x64 100 Okt 0144 Beachten Sie Wenn Sie die Daten lediglich formatieren wollen ohne sie auszugeben verwenden Sie bitte die sprintf Funktion read bestimmte Anzahl Zeichen lesen Liest eine anzugebende Anzahl Zeichen aus einer Datei ab der aktuellen Position des Dateizeigers in einen Skalar ein Erwartet als Parameter 1 das Datei Handle 2 einen Skalar in dem die

    Original URL path: http://html.ekiwi.de/perl/funktionen/einausgabe.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Funktionsreferenz / Funktionen für die Kontrolle des laufenden Scripts
    wird dieser Wert ausgegeben Das Script erzeugt HTML Code und ruft dabei zunächst einmal die Subroutine Satz aufsagen auf Anschließend erhält der bislang undefinierte Skalar ErsterSatz einen Wert und der Skalar ZweiterSatz wird mit undef in jenen Zustand versetzt in dem ihm kein Wert bzw der Nichtwert undef zugewiesen ist Danach wird Satz aufsagen nochmals aufgerufen Beim ersten Aufruf von Satz aufsagen wird nur Den ersten beissen die Katzen ausgegeben beim zweiten Aufruf nur und den letzten wie bekannt die Hunde Beachten Sie Der Anfangswert undef einer Variablen den Sie mit der Funktion undef wieder herstellen können ist etwas anderes als der so genannte Leerstring Eine leere Zeichenkette ist durchaus ein zugewiesener Wert die Script wegen eines Fehlers abbrechen Beendet ein Script wenn es keinen Sinn hat das Script weiter auszuführen Wird z B gern verwendet wenn eine wichtige Datei nicht geöffnet werden kann Schreibt Fehlermeldungen auf die Standardfehlerausgabe STDERR und beendet das Script mit dem aktuellen Wert der vordefinierten Variablen Bei der CGI Schnittstelle eines Webervers ist die Standardfehlerausgabe meistens eine Log Datei in der solche Fehlermeldungen gesammelt werden Suchen Sie gegebenenfalls in der Dokumentation zu Ihrem Webserver nach wo und wie der Server CGI Fehlermeldungen protokolliert Erwartet als Parameter 1 Eine Liste die auf die Standardfehlerausgabe STDERR geschrieben werden soll Sinnvollerweise enthält die Liste eine oder mehrere entsprechende Fehlermeldungen Beispiel usr bin perl w use strict use CGI Carp qw fatalsToBrowser open TEXT daten texte nichtda txt die Fehler aufgetreten my Zeilen TEXT close TEXT Erläuterung Das Beispiel versucht mit open eine Datei zu öffnen die aber nicht vorhanden ist Dadurch wird der Oder Zweig hinter dem logischen Operator steht für oder aktiv Dort ist die Funktion die notiert Sie schreibt auf die Standardfehlerausgabe dass ein Fehler aufgetreten ist Indem sie dabei auch die vordefinierte Variable mit in die Ausgabe schreibt wird auch mitprotokolliert welcher Fehler aufgetreten ist In diesem Fall ist auch die Anweisung use CGI Carp qw fatalsToBrowser sehr hilfreich denn der Fehler wird dadurch zusätzlich auf die Standardausgabe geschrieben und kann so je nach Situation im Browser zur Anzeige gelangen eval Anweisungen oder Anweisungsblöcke interpretieren lassen Perl Scripts werden normalerweise intern zu Operationscode sogenannten Opcodes kompiliert bevor sie ausgeführt werden Das merken Sie als Programmierer beispielsweise daran dass der Perl Interpreter vor der Ausführung abbricht sobald das Script Syntaxfehler enthält Mit Hilfe der eval Funktion können Sie jedoch den Perl Interpreter während der Laufzeit eines Scripts aufrufen und innerhalb des Scripts beliebigen Perl Code interpretieren lassen Wenn Sie so wollen kann ein Perl Script auf diese Weise selber Perl Scripts schreiben und deren Ausführung in die eigene Ausführung einbetten In die Code Erzeugung dürfen natürlich auch Variableninhalte einfließen die das Script verwaltet Erwartet als Parameter 1 entweder eine Zeichenkette die Perl Code enthält oder einen Anweisungsblock in geschweiften Klammern vergleichbar einem Anweisungsblock innerhalb einer Subroutine oder innerhalb einer if Abfrage Der Unterschied zwischen beiden Möglichkeiten besteht darin dass eine übergebene Zeichenkette tatsächlich erst zur Laufzeit kompiliert wird während der Anweisungsblock in der internen Vorab Kompilierung mit berücksichtigt wird Dadurch werden beispielsweise schwere Fehler die zum Scriptabbruch führen in einem übergebenen Anweisungsblock bereits bei der Kompilierung erkannt in einer übergebenen Zeichenkette jedoch erst während der Ausführung Gibt das Ergebnis der zuletzt ausgeführten Anweisung in der übergebenen Zeichenkette oder dem übergebenen Anweisungsblock zurück Im Fehlerfall wird undef zurückgegeben und die aufgetretene Fehlermeldung ist über die vordefinierte Variable abfragbar Beispiel 1 eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Rechenergebnis eval ENV QUERY STRING print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n print Das Ergebnis der übergebenen Rechenoperation lautet strong Rechenergebnis strong br n print body html n Erläuterung Das Script erwartet beim Aufruf einen Übergabeparameter der über URI hinter einem Fragezeichen notiert wird Der Übergabeparameter besteht in einer Rechenoperation Es kann sich auch um geklammerte komplexe Rechenausdrücke handeln z B 6 7 4 5 7 Nur Leerzeichen sind bei diesem einfachen Beispielscript nicht erlaubt da sie bei der Übergabe in der URI Zeile umformatiert werden Über die CGI Umgebungsvariable ENV QUERY STRING kann das Script auf die übergebene Rechenoperation zugreifen Es übergibt die Umgebungsvariable gleich an die Funktion eval Die wiederum übergibt die übergebene Zeichenkette also die Rechenoperation zur Laufzeit an den Perl Interpreter Zurückgegeben wird der Wert dieser Anweisung und das ist in dem Fall einfach das Rechenergebnis so wie Perl es in einem Skalar speichern würde wenn man ihm diese Rechenoperation zuweisen würde Zur Kontrolle gibt das Script HTML Code mit dem Rechenergebnis aus Beachten Sie Scripts wie im Beispiel oben können extrem gefährlich sein Benutzen Sie so etwas niemals als öffentlich zugängliches CGI Script Denn der übergebene Code den das Script vom Anwender erhält wird gnadenlos ausgeführt Wenn der Anwender jemand ist der sich auskennt kann er statt der geforderten Rechenoperation beispielsweise einen Aufruf von system übergeben bei dem ein ganzer Verzeichnisbaum gelöscht oder die Festplatte formatiert wird Beispiel 2 eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Zahl 1 int rand 50 my Zahl 2 int rand 5 my Ergebnis eval Ergebnis Zahl 1 Zahl 2 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n if print Folgender Fehler ist aufgetreten n else print Zahl 1 geteilt durch Zahl 2 ist Ergebnis n print body html n Erläuterung In diesem Beispiel wird die Funktion eval wie in der Praxis oft üblich zum Abfangen von Fehlern verwendet Das Script ermittelt mit rand zwei Zufallszahlen Zahl 1 und Zahl 2 Anschließend dividiert es Zahl 1 durch Zahl 2 Da bei den ermittelten Zufallszahlen jedoch auch der Wert 0 vorkommen kann würde ein schwerer Fehler auftreten wenn Zahl 2 diesen Wert hat Denn eine Division durch 0 führt auf allen Computersystemen zu einem Fehler Das Script bettet die Anweisung mit der Division aus diesem Grund in einen eval Block ein Falls die Zahl 2 tatsächlich den Wert 0 hat wird abgebrochen und in der vordefinierten Variablen steht anschließend die von Perl erzeugte Fehlermeldung Das Beispiel gibt HTML Code aus Dabei fragt es ab ob einen Inhalt enthält Wenn ja wird der Fehler ausgegeben Wenn nein wird das Ergebnis der erfolgreichen Division ausgegeben exit Script beenden Beendet das Script und gibt einen Wert an den aufrufenden Prozess zurück Erwartet als Parameter 1 optional einen zurückzugebenden Wert Die üblichen Werte die auch von fremden aufrufenden Prozessen am ehesten erkannt werden sind 0 für erfolgreich beenden und 1 für Beenden mit Fehler Wenn Sie keinen Parameter übergeben wird automatisch 0 verwendet Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus ohne Übergabeparameter Anzeigebeispiel So sieht s aus mit dem String Newbie als Übergabeparameter Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser if ENV QUERY STRING eq HTML Output Username beim Aufruf erwartet exit 1 else HTML Output Hallo ENV QUERY STRING wie geht s exit 0 sub HTML Output print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n print 0 n print body html n Erläuterung Das Script erwartet beim Aufruf einen Übergabeparameter der hinter einem an den URI angehängten Fragezeichen notiert wird Der Übergabeparameter besteht in einem User Namen Durch Auswerten der CGI Umgebungsvariablen ENV QUERY STRING gelangt das Script an den übergebenen Namen Wenn die Umgebungsvariable leer ist wurde kein Name übergeben In diesem Fall ruft das Script die Subroutine HTML Output auf und lässt sie eine Fehlermeldung senden Anschließend wird das Script mit exit 1 beendet Im anderen Fall wenn alles in Ordnung ist und ein Name übergeben wurde ruft das Script ebenfalls HTML Output auf diesmal jedoch mit einer netten Begrüßung des Users In diesem Fall beendet sich das Script anschließend mit exit 0 Beachten Sie Es ist kein guter Programmierstil exit in Subroutinen zu verwenden Wenn das Script in solchen Programmteilen fehlerhafte Situationen erkennt sollte es besser mit return einen Wert zurückgeben der an einer zentralen Stelle im Script als Fehler erkannt wird und dort zu einem Aufruf von exit führt local Wert von Variablen lokal begrenzen Beschränkt den Wert einer Variablen egal ob Skalar Liste oder Hash usw auf lokale Gültigkeit Die Beschränkung kann sich auf einen Anweisungsblock oder einen der Bereiche beziehen die aus diesem Anweisungsblock heraus aufgerufen werden Wenn es eine gleichnamige Variable außerhalb des Blocks gibt wird dieser innerhalb des Anweisungsblocks temporär ein neuer Wert zugewiesen Anwenden können Sie diese Funktion bei der Ersteinführung also der Deklaration einer Variablen Beachten Sie dass local nicht wirklich eine lokale Variable erzeugt sondern nur eine globale Variable mit einem lokal gültigen Wert Verwenden Sie local daher nur in begründeten Ausnahmefällen Echte lokal gültige Variablen werden durch my deklariert Erwartet als Parameter 1 eine Variable der temporär ein neuer Wert zugewiesen werden soll Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser use vars qw Zahl 1 Zahl 2 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my Ergebnis Subroutine 1 print Ergebnis n print body html n sub Subroutine 1 local Zahl 1 10 Zahl 1 Zahl 1 2 Zahl 2 Subroutine 2 return Zahl 1 Zahl 2 sub Subroutine 2 return Zahl 1 100 Erläuterung Das Beispiel deklariert zu Beginn zwei Skalare Zahl 1 und Zahl 2 Dies sind globale Variablen die überall Gültigkeit haben und an jeder Stelle des Scripts verändert werden können Das Beispiel enthält weiter unten jedoch auch noch eine Subroutine namens Subroutine 1 Innerhalb dieser Subroutine die aus Sicht von Perl einen Anweisungsblock darstellt wird mit local Zahl 1 einer dieser globalen Variablen für die Subroutine Subroutine 1 ein anderer Wert zugewiesen nämlich 10 Würde das local fehlen so würde einfach der globalen Variablen Zahl 1 ein neuer Wert zugewiesen Zahl 1 wird in der darauffolgenden Anweisung mit 2 multipliziert Hinterher steht 20 als Wert in Zahl 1 da die Multiplikation mit dem temporären Wert 10 vorgenommen wird Aus Subroutine 1 heraus wird anschließend Subroutine 2 aufgerufen Dort wird wiederum die Variable Zahl 1 verwendet Zu diesem Zeitpunkt ist im Script Ablauf der globale Wert 5 der Variablen Zahl 1 noch immer durch den temporären Wert 20 ersetzt Da er auch in Bereichen Gültigkeit hat die von Subroutine 1 aus aufgerufen werden wird dieser Wert innerhalb von Subroutine 2 weiter verwendet hier liegt ein sichtbarer Unterschied zur Funktion my Zum aktuellen Wert 20 wird 100 addiert Der Wert den Subroutine 2 mit return zurückgibt lautet also 120 Subroutine 1 gibt nach dem Aufruf von Subroutine 2 ebenfalls das Ergebnis einer Addition an den aufrufenden Befehl zurück Da Zahl 2 den Wert 120 hat wird also der Wert 140 zurückgegeben Im Hauptprogramm erzeugt das Beispiel HTML Code Dabei wird Subroutine 1 aufgerufen und deren Rückgabewert im Skalar Ergebnis gespeichert Zur Kontrolle wird das Ergebnis ausgegeben my Gültigkeitsbereich von Variablen begrenzen Schränkt den Gültigkeitsbereich einer Variablen egal ob Skalar Liste oder Hash usw auf einen Namensraum oder einen Anweisungsblock ein Wenn es eine gleichnamige Variable außerhalb des Blocks gibt wird diese nicht berührt Anwenden können Sie diese Funktion bei der Definition einer Variablen Erwartet als Parameter 1 eine Variable deren Gültigkeitsbereich eingeschränkt werden soll Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser use vars qw Zahl 1 Zahl 1 1 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my Ergebnis Subroutine 1 print Ergebnis n print body html n sub Subroutine 1 my Zahl 1 10 my Zahl 2 Subroutine 2 return Zahl 1 Zahl 2 sub Subroutine 2 return Zahl 1 100 Erläuterung Das Beispiel deklariert zu Beginn einen Skalar Zahl 1 Dies ist eine globale Variable die überall Gültigkeit hat und an jeder Stelle des Scripts verändert werden kann Die Deklaration erfolgt mit dem Standardmodul vars Der Grund dafür ist dass die Verwendung von use strict sonst keine Deklaration globaler Variablen erlaubt und einen Fehler erzeugen würde Im Beispiel sehen Sie wie das Modul vars eingesetzt wird Mit use eingebunden steht in der Klammer hinter qw der Name Zahl 1 also der Name der Variablen die global deklariert werden soll In der Klammer hinter qw können Sie als Liste durch Leerzeichen getrennt auch mehrere globale Variablen angeben Das Beispielscript enthält weiter unten eine Subroutine namens Subroutine 1 Innerhalb dieser Subroutine die aus Sicht von Perl einen Anweisungsblock darstellt wird mit my Zahl 1 eine Variable deklariert die den gleichen Namen hat wie die globale Variable Durch Anwendung von my ist es jedoch eine eigene neue Variable die mit 10 initialisiert wird Würde das my fehlen so würde einfach der globalen Variablen Zahl 1 ein neuer Wert zugewiesen Aus Subroutine 1 heraus wird Subroutine 2 aufgerufen Dort wird wieder die Variable Zahl 1 verwendet Zu diesem Zeitpunkt im Script Ablauf existieren beide Variablen Zahl 1 Da diejenige die in Subroutine 1 deklariert wurde jedoch nur dort Gültigkeit hat ist innerhalb von Subroutine 2 wieder die globale Variable gemeint Zu deren Wert 1 wird 100 addiert Der Wert den Subroutine 2 mit return zurückgibt lautet also 101 Subroutine 1 gibt nach dem Aufruf von Subroutine 2 ebenfalls das Ergebnis einer Addition an den aufrufenden Befehl zurück In diesem Fall ist mit Zahl 1 wieder diejenige Variable gemeint die innerhalb des gleichen Blocks also innerhalb von Subroutine 1 deklariert wurde und die den Wert 10 hat Da Zahl 2 den Wert 101 hat wird also der Wert 111 zurückgegeben Im Hauptprogramm gibt das Beispiel HTML Code aus Dabei wird Subroutine 1 aufgerufen und deren Rückgabewert im Skalar Ergebnis gespeichert Zur Kontrolle wird das Ergebnis ausgegeben quotemeta Alle Zeichen außer A Z a z 0 9 und maskieren Wandelt eine Zeichenkette so um dass alle Zeichen außer A bis Z a bis z 0 bis 9 und Unterstrich mit einem Backslash maskiert werden Erwartet als Parameter 1 eine Zeichenkette die umgewandelt werden soll Gibt die umgewandelte Zeichenkette zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my Normaltext Test my Normallaenge length Normaltext my Quotematatext quotemeta Normaltext my Quotematalaenge length Quotematatext print strong Normaltext strong wurde umgewandelt in strong Quotematatext strong br n print Textlänge zuvor strong Normallaenge strong Zeichen br n print Textlänge jetzt strong Quotematalaenge strong Zeichen n print body html n Erläuterung Das Beispiel erzeugt HTML Code Dabei demonstriert es die Wirkungsweise von quotemeta Ein Skalar namens Normalext wird zunächst mit einem Wert belegt der neben dem Wort Test diverse Pluszeichen enthält Außerdem wird mit length die Länge der Zeichenkette ermittelt Durch die anschließende Anwendung der Funktion quotemeta auf Normaltext werden die Pluszeichen maskiert Der Rückgabewert der Funktion wird in einem neuen Skalar namens Quotemetatext gespeichert Auch dessen Länge wird mit length ermittelt Zur Kontrolle gibt das Script alle ermittelten Daten aus Die maskierte Version hat 6 Zeichen mehr da jedes Pluszeichen maskiert wurde return aus Subroutine zurückkehren und Wert zurückgeben Gibt einen Wert an die Anweisung zurück welche die Subroutine aufgerufen hat Erwartet als Parameter 1 optional ein Wert der zurückgegeben werden soll Es kann sich um eine Zahl eine Zeichenkette oder um eine beliebige Variable auch um eine komplette Liste oder einen Hash handeln Wenn kein Parameter übergeben wird wird einfach die Subroutine verlassen und je nach zuletzt ausgeführtem Kontext eine leere Liste oder ein Skalar mit dem Wert undef zurückgegeben Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my Ausgabe fett eine wichtige Angelegenheit print p Ausgabe p n Ausgabe kursiv eine noch wichtigere Angelegenheit Ausgabe fett Ausgabe print p Ausgabe p n print body html n sub fett my fetterText strong 0 strong return fetterText sub kursiv my kursiverText i 0 i return kursiverText Erläuterung Das Beispiel enthält zwei Subroutinen namens fett und kursiv In beiden Subroutinen wird ein übergebener Parameter erwartet der in dem vordefinierten Array für Übergabeparameter an erster Stelle 0 steht Dieser übergebene Parameter wird in die HTML Tags für fett bzw kursiv gesetzt Die Skalare fetterText bzw kursiverText die dieses Konstrukt speichern werden anschließend mit return zurückgegeben Das Script erzeugt HTML Code Während der Ausgabe ruft es die beiden Subroutinen auf Der Rückgabewert wird jeweils in dem Skalar Ausgabe gespeichert Im zweiten Fall werden sogar beide Subroutinen hintereinander aufgerufen Dadurch wird der übergebene Text erst kursiv dann fett also insgesamt fett kursiv Zur Kontrolle werden die HTML Konstrukte ausgegeben Beachten Sie Subroutinen geben auch dann etwas zurück wenn sie nicht mit return verlassen werden Wenn Sie beispielsweise eine Subroutine so aufrufen Ausgabe Test und die Subroutine so aussieht sub Test x 1 dann ist in Ausgabe anschließend der Wert 1 gespeichert scalar Ausdruck in skalarem Kontext bewerten Erwartet als Parameter 1 einen beliebigen Ausdruck Es kann

    Original URL path: http://html.ekiwi.de/perl/funktionen/kontrolle.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Perl-Module / Modul CGI: Funktionen für die CGI-Programmierung
    die für die Client Server Kommunikation von Bedeutung sind Und was den HTML Dateikopf betrifft so kann dieser ebenfalls wichtige allgemeine Angaben zur HTML Datei enthalten z B Meta Tags Scriptbereiche für CSS oder Javascript logische Beziehungen oder Attribute zur Seitengestaltung im einleitenden body Tag die zwar zulässig und noch nicht einmal deprecated sind trotzdem aber besser mit CSS bestimmt werden sollten Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI use CGI Carp qw fatalsToBrowser my cgi new CGI print cgi header type text html expires 1h cgi start html title Testseite mit Link author beispiel example org base true target blank meta keywords TeamOne Test description ein kleiner Test mit einem Link style src styles formate css BGCOLOR FFFFCC TEXT 000000 LINK red VLINK blue ALINK black cgi p ein kleiner Test mit einem cgi a href http www selfhtml org Link auf selfhtml org cgi end html Erläuterung Das Script bindet mit use CGI das CGI Modul ein Da kein Parameter zur Modifizierung der Dokumenttyp Deklaration angegeben ist wird standardmäßig XHTML 1 0 generiert werden Das Script erzeugt dann mit my cgi new CGI eine neue Instanz des CGI Objekts Bei der HTML Ausgabe die es anschließend zusammenstellt nutzt es verschiedene Möglichkeiten um den HTTP Header und die Daten im Kopf der HTML Datei zu beeinflussen Sowohl der Methode header zum Erzeugen des HTTP Headers als auch der Methode start html zum Erzeugen des HTML Dateikopfes können Sie mehrere Argumente übergeben Beide Methoden kennen jeweils ein Standardargument bei header ist dies der MIME Typ und bei start html der Inhalt des title Elements Deshalb können Sie diese Argumente ohne weiteres direkt angeben also etwa in der Form header text plain oder start html Text des Titels Bei Angabe von mehreren und weiteren Argumenten sollten Sie jedoch die oben gezeigte Syntax verwenden Dabei besteht jedes Argument aus einem Parameternamen eingeleitet durch ein Minuszeichen einem Zeigeoperator und dem gewünschten Wert Argumente beim HTTP Header Die folgende Tabelle zeigt Ihnen welche Angaben zum HTTP Header Sie notieren können Die Code Beispiele der linken Spalte stellen nur den reinen Methodenaufruf von header dar Aufrufbeispiel Erläuterung header type image gif Mit type können Sie den MIME Typ des nachfolgenden Datenstroms bestimmen Im Beispiel können Sie anschließend die binären Daten einer GIF Grafik ausgeben dazu vorher gegebenenfalls die Funktion binmode aufrufen header status 204 No response Mit status können Sie eine HTTP Statusmeldung an den Browser senden Mit der Beispielanweisung HTTP Status 204 können Sie die Ausgabe weiterer Daten an den Browser verweigern Beim Anwender bleibt die zuletzt angezeigte Seite am Bildschirm stehen Sinnvoll beispielsweise wenn der Anwender durch Klick auf einen Link ein Voting Script anstößt das ihn aber nicht am sofortigen Weiterlesen der Seite hindern soll print cgi header expires 120s Mit expires können Sie bewirken dass der Browser die HTML Ausgabe für einen Mindestzeitraum in seinen Cache Speicher übernimmt Bei einem Reload der ausgegebenen Seite innerhalb des angegebenen Zeitraums ruft der Browser dann nicht mehr das Script auf sondern holt den HTML Code aus seinem Cache Den Zeitraum geben Sie als Zahl mit voranstehendem Pluszeichen und einem nachgestellten Buchstaben für die Zeiteinheit an Die Angabe 30s im Beispiel bedeutet HTML Code 30 Sekunden im Cache halten Andere Zeiteinheiten sind m Minuten h Stunden d Tage M Monate und y Jahr Darüber hinaus sind absolute Zeitangaben im UTC Format erlaubt wie z B Friday 08 Jun 2001 11 29 00 GMT 0100 print cgi header cookie Cookie Mit cookie können Sie einen Cookie aktivieren Mehr dazu im Abschnitt Cookies verwalten mit dem CGI Modul print cgi header nph 1 Mit diesem Befehl können Sie so genannte NPH Scripts schreiben NPH steht für no parsed header und bedeutet dass das CGI Script die nachfolgenden Daten direkt an den aufrufenden Browser sendet ohne dass der Webserver etwas davon mitbekommt Dies kann zu Performance Gewinnen führen und in einigen Fällen etwa beim Einsatz des Microsoft IIS Webservers ist es sogar vorgeschrieben den NPH Modus zu verwenden Dokumenttyp Deklarationen DTD Standardmäßig verwendet das CGI Modul wie bereits angedeutet XHMTL 1 0 Transitional Das heißt Sie finden eine Dokumenttyp Angabe im generierten XHTML Dokument grundsätzlich in dieser Form vor 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 Nun kann es aber durchaus Gründe geben weshalb Sie eine andere DTD einsetzen möchten beispielsweise möchten Sie vielleicht ein Frameset erzeugen oder müssen auf HTML 4 01 bestehen Dann können Sie das CGI Modul dazu zwingen gar keine Vorgabe zu machen indem Sie es in der Form use CGI no xhtml in Ihr Script einbinden Das bedeutet zugleich dass Sie dann an anderer Stelle eine entsprechende Deklaration vornehmen müssen Dazu stellt Ihnen das CGI Modul für die Methode cgi start html den Parameter dtd zur Verfügung den Sie in dieser Form notieren können cgi start html dtd W3C DTD HTML 4 01 Strict EN Die folgende Liste enthält einige Documenttyp Deklarationen die Sie bei Bedarf wählen können W3C DTD HTML 4 01 EN W3C DTD HTML 4 01 Transitional EN W3C DTD HTML 4 01 Frameset EN W3C DTD XHTML 1 0 Strict EN W3C DTD XHTML 1 0 Transitional EN W3C DTD XHTML 1 0 Frameset EN W3C DTD XHTML 1 1 EN W3C DTD HTML 3 2 EN W3C DTD HTML 2 0 EN Sie sehen dass Sie nicht die gesamte dreizeilige Deklaration notieren müssen Das CGI Modul ergänzt die fehlenden Angaben so dass in Ihrer vom Script generierten HTML Ausgabe immer die vollständige Dokumenttyp Deklaration zu finden sein wird Denken Sie daran dass von der Wahl der für Ihr Seitenprojekt zutreffenden DTD unter anderem abhängt welche HTML Elemente Sie überhaupt verwenden dürfen und wie sie auszusehen haben um validen HTML Code zu generieren Argumente beim HTML Dateikopf Die folgende Tabelle listet auf welche Angaben Sie zum HTML Dateikopf notieren können Die Code Beispiele der linken Spalte stellen nur den reinen Methodenaufruf von start html dar Aufrufbeispiel Erläuterung start html title Titeltext Mit title bestimmen Sie den Titel der HTML Ausgabe Das Beispiel erzeugt den folgenden HTML Code TITLE Titeltext TITLE start html author beispiel example org Mit author erzeugen Sie eine logische Beziehung zu einer E Mail Adresse Das Beispiel erzeugt folgenden HTML Code LINK REV MADE HREF mailto beispiel 40example org start html base http example org Mit base bestimmen Sie die Basisadresse der ausgegebenen HTML Seite Das Beispiel erzeugt folgenden HTML Code BASE HREF http example org start html target dataframe Mit target bestimmen Sie den Basis Fensternamen für Links in der HTML Ausgabe Das Beispiel erzeugt folgenden HTML Code BASE TARGET dataframe start html meta keywords HTML CSS Mit meta können Sie Meta Angaben notieren jedoch nur solche die in HTML vom Typ name sind nicht solche die vom Typ http equiv sind Mehrere Meta Angaben gleichzeitig sind erlaubt Jede einzelne Meta Angabe muss in geschweiften Klammern stehen Innerhalb der geschweiften Klammern folgt zunächst der Wert der in HTML dem name Attribut zugewiesen würde gefolgt von dem Operator und dem Wert den Sie in HTML dem content Attribut zuweisen würden Das Beispiel erzeugt folgenden HTML Code META NAME keywords CONTENT HTML CSS start html BGCOLOR 000000 Mit allen anderen Argumenten die mit einem Minuszeichen beginnen und keinen der anderen reservierten Namen wie title oder meta haben bestimmen Sie Attribute die ins einleitende body Tag eingefügt werden Das Beispiel erzeugt folgenden HTML Code BODY BGCOLOR 000000 Formularverarbeitung mit dem CGI Modul In der Regel werden CGI Scripts von HTML Formularen über das action Attribut innerhalb des Formulars aufgerufen es gibt auch andere Möglichkeiten beispielsweise über SSI Typischerweise sieht ein HTML Formular so ähnlich aus wie im folgenden Beispiel Beispiel HTML Datei mit CGI Aufruf DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN html head title Kommentarseite title link rel stylesheet type text css href style css head body h1 Ihr Kommentar h1 form action cgi bin comments pl method post p Name br input size 40 maxlength 40 name AnwenderName p p Text br textarea rows 5 cols 50 name Kommentartext textarea p p input type submit value Absenden p form body html Beispiel vollständiges CGI Script comments pl mit HTML Ausgabe usr bin perl w use strict use CGI use CGI Carp qw fatalsToBrowser my cgi new CGI my Feldnamen cgi param print cgi header cgi start html CGI Feedback cgi h1 CGI Feedback vom Programm cgi i comments pl foreach my Feld Feldnamen print cgi strong Feldname Feld cgi strong Inhalt cgi param Feld br print cgi end html Erläuterung Sobald Sie den submit button dieses Formulars mit der Maus anklicken wird Ihr Browser angewiesen sich erneut an den Webserver mit einer Anfrage zu wenden Die Art dieser Anfrage bestimmt das Attribut method dessen Wert in den meisten Fällen post lauten wird Mit dem Attribut action informiert das Formular den Webserver was er tun soll es muß ja nicht unbedingt ein Perl Script sein das der Server um Übernahme und Weiterverarbeitung der von Ihnen eingegebenen und vom Browser ebenfalls übermittelten Daten bitten soll Auch ein PHP Script ein Shell Script eine ausführbare Datei exe eine Stapelverarbeitungsdatei bat oder ein anderer Programmaufruf kann von action initialisiert werden In diesem Fall ist es jedoch das Perl Script comments pl das einfach die übergebenen Daten sortiert auswertet und als HTML wieder zurückliefert Die Bezeichnung Formularverarbeitung ist zwar üblich aber streng genommen nicht ganz korrekt Es ist ja keineswegs das Formular das verarbeitet wird sondern es handelt sich um diejenigen Daten die Sie in bestimmte Eingabefelder eingetragen haben Namen Adressen Texte usw Entsprechend der im Formular angegebenen Übermittlungsmethode POST oder GET andere HTTP Zugriffsmethoden wie PUT oder DELETE spielen hier keine Rolle schickt der Browser nach Aktivierung eines submit buttons oder nach dem Drücken der Enter Taste einen Datenstrom an den Webserver Der Webserver entscheidet was er damit machen soll und schickt alles an den Perl Interpreter der wiederum das CGI Modul fragt wie er den ganzen Datenstrom auftrennen und in sinnvolle Einzelinformationen umwandeln soll Das CGI Modul stellt ihm dafür die Methode param zur Verfügung Mit dieser Methode werden falls vorhanden die Teile des übermittelten Datenstroms als Array gespeichert Und diesen Array kann Ihr Script nun beliebig verwenden Die Methode param Bei der Methode param kommt es darauf an in welchem Kontext sie aufgerufen wird Dementsprechend unterschiedlich ist ihr Rückgabewert Sie können zum Beispiel ein Array Feldnamen cgi param notieren Es handelt sich dann also um einen Listenkontext d h erwartet wird eine Liste als Rückgabewert Bei dieser Art des Aufrufs liefert param sämtliche Feldnamen eines eingelesenen Formulars zurück Das sind jene Namen die im HTML Formular bei der Definition der Formularfelder jeweils mit dem Attribut name festgelegt wurden Wenn param ein einzelner Feldname als Parameter übergeben wird liefert die Methode den zugehörigen Wert oder Inhalt des Feldes zurück Der Kontext ist dann skalar Die folgende Tabelle fasst die Aufrufmöglichkeiten von param zusammen Aufrufbeispiel Rückgabewert Erläuterung if cgi param Liste im booleschen Kontext ausgewertet true oder false Ein solcher Aufruf in Form einer if Bedingung ermittelt ob überhaupt Daten an das Formular übergeben wurden oder nicht Dies ist sinnvoll wenn ein Script aus mehreren verschiedenen Kontexten heraus aufgerufen werden kann und erst einmal feststellen muss ob es Formulardaten erhalten hat oder nicht Im if Zweig könnten die Formulardaten eingelesen werden und im else Zweig könnten Anweisungen stehen für den Fall dass keine Formulardaten übergeben wurden Wert cgi param AnwenderName Skalar Gibt den Wert oder Inhalt des Formularfeldes mit dem Namen AnwenderName zurück Diese Form der Notation ist sinnvoll wenn Sie als Script Autor die Feldnamen übergebener Formulardaten kennen und direkt den Wert oder Inhalt des jeweiligen Feldes ermitteln möchten Namen cgi param Liste Gibt sämtliche Feldnamen des Formulars zurück cgi param Namen 2 Skalar Gibt den Wert oder Inhalt des dritten Formularfeldes zurück Namen 0 wäre das erste Formularfeld sofern zuvor mit Namen cgi param die Feldnamen als Liste gespeichert wurden Zutaten cgi param Zutat Liste Gibt den Wert oder Inhalt einer Formularfeldgruppe mit gleichen Namen zurück zurück vor allem bei Checkboxen in HTML Formularen ist diese Aufrufvariante wichtig In der Liste Zutaten stehen anschließend alle Zutaten die ein Anwender in Checkbox Elementen mit dem Attribut name Zutat angekreuzt hat Beachten Sie Die Darstellung der Methode param ist ein hervorragend geeignetes Beispiel um Ihnen etwas detaillierter zu zeigen was das CGI Modul für Sie erledigt In vielen älteren Perl Scripts die Sie im Internet finden können und auch in älteren Versionen dieser SELFHTML Seite die Sie sich im Archiv anschauen können sehen Sie beispielsweise solche kryptisch wirkende Anweisungen if ENV REQUEST METHOD eq GET Daten ENV QUERY STRING else read STDIN Daten ENV CONTENT LENGTH sub verarbeiten Formularfelder split Daten foreach Feld Formularfelder name value split Feld value tr value s a fA F0 9 a fA F0 9 pack C hex 1 eg Formular i name i i 1 Formular i value i i 1 Solche Anweisungen müßten Sie wenn Sie Formulardaten verarbeiten möchten erneut in Ihrem Script notieren wenn Sie auf das CGI Modul verzichten wollten Das CGI Modul nimmt Ihnen nun diese Arbeit ab da es in geringfügig anderer Form genau diese Anweisungen bereits enthält und dem Perl Interpreter deren Ergebnisse in einer Form zur Verfügung stellt die es Ihnen wiederum erlaubt sie einfach mit der Benutzung der Methode param abzurufen Beispielsweise könnten Sie so etwas in Ihrem Script notieren print cgi p Ihr Name ist cgi param AnwenderName Damit würde die Methode param im skalaren Kontext aufgerufen und der im oben schematisch dargestellten HTML Formular eingetragene Name des Formularbenutzers ausgegeben Im oben dargestellten Beispielscript comments pl wird die Methode param allerdings im Listenkontext verwendet daher müssen Sie in diesem Script die Array Bestandteile erst mit einer foreach Schleife individualisieren um sie ausgeben zu können Ein solcher Listenkontext ist dann nützlich wenn das Script von unterschiedlichen Formularen verwendet wird die unterschiedlich viele Eingabefelder mit unterschiedlichen Namen enthalten In einem solchen Fall weiß das Script bzw wissen Sie als Programmierer nicht von vornherein welche Daten im Datenstrom enthalten sind und als HTML zurückgeliefert werden sollen cgi param AnwenderName könnte auch leer nicht existent sein und es könnten andere name Attribute mit Werten belegt worden sein Wenn Sie param im Listenkontext verwenden vermeiden Sie mögliche Fehler Formularerstellung Wenn Sie sich intensiver mit Perl beschäftigen und das CGI Modul ausgiebig nutzen werden Sie vermutlich kein statisches HTML Dokument zum Aufruf einer Formularauswertung einsetzen sondern dieses Formular auch gleich selbst von Ihrem Script generieren lassen Das hat verschiedene Vorteile Sie können beispielsweise in Abhängigkeit von Umgebungsdaten Umgebungsdaten die Sie zuvor ermitteln Formularfelder mit Werten vorbelegen Ausserdem füllt das CGI Modul diese Felder automatisch wenn Sie das Formular z b nach einer Fehleingabe wieder mit den eingegebenen Werten ausgefüllt anzeigen lassen wollen dieses Verhalten ist manchmal nicht erwünscht und kann bei Bedarf durch den Parameter override 1 unterdrückt werden Beispiel eines vollständigen CGI Scripts in Perl usr bin perl w use strict use CGI use CGI Carp qw fatalsToBrowser my cgi new CGI print cgi header if cgi param absenden print cgi start html title Auswertung anzeige cgi else print cgi start html title Testformular formular cgi print cgi end html sub formular print cgi start form cgi table border 1 cgi Tr cgi td cgi strong Name cgi textfield name name size 40 cgi td E Mail cgi textfield name mail size 40 cgi td cgi strong Text cgi textarea name text columns 50 rows 5 cgi td cgi submit name absenden value absenden cgi reset value verwerfen cgi end form sub anzeige print cgi h2 hier kommt die Auswertung if cgi param name cgi param text print cgi strong q Sie haben nichts eingegeben Bitte wiederholen Sie Ihre Eingabe return formular cgi if cgi param name print cgi strong Ihr Name ist cgi param name cgi br if cgi param mail print cgi strong Ihre mail ist cgi param mail cgi br if cgi param text print cgi strong Ihre Nachricht cgi param text cgi br Erläuterung Wie immer in den hier vorgestellten Beispielen wird zunächst das CGI Modul eingebunden und danach mit my cgi new CGI eine neue Instanz des CGI Objekts erzeugt Es folgt jedoch nicht unmittelbar die Ausgabe von HTML Code sondern eine bedingte Anweisung Das Script entscheidet anhand eventuell vorhandener POST Variablen welche der beiden Subroutinen es abarbeiten soll Findet es keine POST Variable mit dem Wert absenden auch der submit button sendet einen Wert für eine POST Variable so ruft es die Subroutine anzeige auf die ein vollständiges HTML Formular zur Verfügung stellt Wurde dieses Formular bereits ausgefüllt existieren aber POST Variablen also befolgt das Script dann die Festlegungen der ersten Subroutine und liefert dem Webserver Angaben zur Darstellung der eingegebenen Werte zurück Beachten Sie Für das Script wird der objektorientierte Modus verwendet Bisher haben Sie an den vorgestellen Scriptbeispielen gesehen dass HTML Elemente in diesem Modus von Methoden eines CGI Objekts dargestellt werden Aber auch Subroutinen sind in diesem Modus nichts anderes als Objektmethoden Sie erkennen es an der Art in der die im Script enthaltene bedingte Anweisung entscheidet welche Subroutine aufgerufen werden soll formular cgi Umgebungsdaten ermitteln mit dem CGI Modul Häufig benötigt ein CGI Script Informationen über seine Umgebung z B über den Server den aufrufenden Browser oder über seinen eigenen Speicherort auf dem Server Das CGI Modul stellt zum Ermitteln solcher Daten verschiedene Methoden bereit Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI use CGI Carp qw fatalsToBrowser my cgi new CGI print cgi header cgi start html Umgebungsdaten cgi start table border 1 cgi Tr cgi th align right Script URI cgi td cgi url full 1 cgi Tr cgi th align right relative Script URI cgi td cgi url relative 1 cgi Tr cgi

    Original URL path: http://html.ekiwi.de/perl/module/cgi.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Funktionsreferenz / Funktionen für Zeichenketten
    als Parameter 1 die Zeichenkette die bearbeitet werden soll Gibt die bearbeitete Zeichenkette zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my Wort Textart print lcfirst Wort print body html n Erläuterung Das Beispiel gibt nur ein Wort aus Bevor das Wort ausgegeben wird wird allerdings die Funktion lcfirst darauf angewendet Der führende Großbuchstabe wird dabei in einen Kleinbuchstaben verwandelt length Anzahl Zeichen einer Zeichenkette ermitteln Erwartet als Parameter 1 die gewünschte Zeichenkette Gibt die Anzahl Zeichen in der Zeichenkette zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus ohne Übergabeparameter Anzeigebeispiel So sieht s aus mit dem String http www selfhtml org als Übergabeparameter Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my URI ENV QUERY STRING my Laenge length URI print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n print a href URI URI a hat eine Länge von Laenge Zeichen n print body html n Erläuterung Das Beispiel CGI Script erwartet einen Übergabeparameter der beim Aufruf über URI hinter einem Fragezeichen notiert wird Der Übergabeparameter sollte selber einen URI enthalten Beispiel http localhost cgi bin test pl http www selfhtml org Das Beispiel ermittelt mit length die Länge der übergebenen Adresse und gibt HTML Code mit einem Link auf die Adresse mit Angabe der Zeichenzahl aus ord Zeichenwert eines Zeichens ermitteln Ermittelt zu einem Zeichen den zugehörigen Wert zwischen 0 und 127 Die Gegenfunktion ist chr Erwartet als Parameter 1 das gewünschte Zeichen Gibt den zugehörigen Zeichenwert zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my MagischeZahl 155 my Laenge length MagischeZahl my Quersumme 0 for my i 0 i Laenge i my Zeichen substr MagischeZahl i 1 Quersumme Quersumme int ord Zeichen print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n print Die Quersumme der ASCII Werte der Zeichen der Zahl MagischeZahl beträgt Quersumme n print body html n Erläuterung Das Beispiel definiert eine magische Zahl 155 Magisch ist diese Zahl deshalb weil sie aus den Zeichen 1 5 und nochmal 5 besteht und weil die Summe der Zeichenwerte dieser drei Zeichen 155 ergibt Denn die 1 hat den Zeichenwert 49 und die 5 hat den Zeichenwert 53 und 49 53 53 ergibt 155 In einer for Schleife wird die Zahl Ziffer für Ziffer eingelesen Das geht in Perl mit Hilfe der Funktion substr Auf das jeweils eingelesene Zeichen wird die Funktion ord angewendet Ihr Rückgabewert also der Zeichenwert des verarbeiteten Zeichens wird bei jedem Schleifendurchgang zu dem bisherigen Wert des Skalars Quersumme hinzuaddiert Das Script gibt zur Kontrolle ein entsprechendes Ergebnis als HTML Code aus pack Binärdaten erzeugen Erzeugt eine binäre Datenstruktur aus einem oder mehreren Werten Der Daten Input kann selbst eine Zeichenkette aber etwa auch eine Liste sein Eine zusätzliche Formatierungsangabe dient dazu das binäre Datenformat des zu erzeugenden Ergebnisses der Konvertierung genau zu steuern Für die Formatierungsangabe steht eine spezielle Syntax zur Verfügung Die Funktion pack wird beispielsweise verwendet um einer Datenbank Zeichenketten zu übergeben innerhalb deren die Datenbank feste Feldlängen erwartet Aber auch andere mächtige Konvertierarbeiten sind möglich So lassen sich Daten mit Hilfe von pack etwa sehr einfach nach dem UUencode Verfahren kodieren Erwartet als Parameter 1 die Formatierungsangabe 2 den Daten Input eine Zeichenkette oder eine Liste Gibt den erzeugten Wert zurück Beispiel 1 eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Datensatz 1 Anna Lyse 07 07 1977 w Bau 21 Zi 280 seit 03 1999 Team Assistenz Marketing my Datensatz 2 Rainer Zufall 29 02 1960 m Bau 113 Zi 11 Bereichsleiter Entwicklung my Format A10 A14 A10 A1 A7 A7 A my Ausgabe 1 pack Format Datensatz 1 my Ausgabe 2 pack Format Datensatz 2 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n print pre n print Ausgabe 1 n print Ausgabe 2 n print pre n print body html n Erläuterung In dem Beispiel werden zunächst zwei Listen Datensatz 1 und Datensatz 2 mit gleichartigen Mitarbeiterdaten definiert Die Felder eines Datensatzes sollen jeweils zu einer Zeichenkette verbunden werden sodass sich diese beispielsweise als Zeile am Bildschirm ausgeben oder in eine Datei schreiben lässt Dabei sollen jedoch die Felder immer an der gleichen Spaltenposition beginnen so wie in der Ergebnisausgabe dargestellt Um das zu erreichen wird eine Zeichenkette namens Format definiert Sie definiert die Feldbreiten der einzelnen Datenfelder Dazu benutzt sie die spezielle Syntax für pack Formatierangaben Weiter unten finden Sie eine Tabelle der Formatierangaben Im Beispiel wird für das erste Feld Vorname mit A10 eine Breite von 10 Zeichen definiert für das zweite Feld Nachname mit A14 eine Breite von 14 Zeichen und so weiter für die übrigen Datenfelder Das letzte Feld die beschreibende Angabe wird durch das Sternchen bei A als so breit wie der Inhalt des Feldes ist definiert Anschließend wird zweimal die Funktion pack angewendet einmal auf Datensatz 1 und dann auf Datensatz 2 In beiden Fällen wird die gleiche Formatierangabe also Format benutzt Der Räckgabewert wird in den Zeichenketten Ausgabe 1 bzw Ausgabe 2 gespeichert Diese beiden Zeichenketten werden zur Kontrolle als HTML Ausgabe zum Browser gesendet Wichtig ist dabei die Ausgabe in einen pre Bereich zu setzen da nur dort die Spaltendarstellung sichtbar wird Beispiel 2 eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Satz In Münchner Biergärten gibt es Bier nur aus Maßkrügen my UUE Satz pack u Satz print Content type text plain n n print Der Satz Satz lautet UU kodiert n UUE Satz Erläuterung Das Beispiel definiert einen Satz in dem Skalar Satz Auf diesen Skalar wird die Funktion pack angewendet Als Formatierangabe wird dabei u übergeben Dies bewirkt eine Kodierung nach dem UUencode Verfahren Das Ergebnis wird in dem neuen Skalar UUE Satz gespeichert Zur Kontrolle wird ein entsprechender Text an den Browser gesendet Der Beispielsatz erscheint in der UUencode Kodierung als M26X 3 QN8VAN97 0FEE F D G1E B G 6 T 5S I97 G5R U R 8 K OQG96X Tabelle der Formatierangaben Durch die Formatierangabe steuern Sie die Art wie pack den Daten Input behandelt Typ Bedeutung Beispiel Erläuterung a n Erzeugt einen String aus 8 Bit Zeichen und ist auch für binäre Daten geeignet n ist eine Zahl für die Feldbreite Ungenutzte Bytes werden mit Zeichenwert 0 Hex 0 aufgefüllt Überbreite Feldinhalte werden abgeschnitten Anstelle einer Zahl ist auch erlaubt Dadurch richtet sich die Feldbreite nach dem Feldinhalt Mitarbeiter 03919 Hinkel Ausgabe pack a5 a15 Mitarbeiter Ein Mitarbeiterdatensatz bestehend aus einer Ausweisnummer und dem Namen wird in eine Zeichenkette verwandelt A n Erzeugt ASCII Zeichen Zeichenwerte 0 127 und ist daher für Textdaten geeignet n ist eine Zahl für die Feldbreite Ungenutzte Bytes werden mit Leerzeichen Zeichenwert 32 aufgefüllt Ansonsten wie a Ausgabe pack A80 kleine Zeile Erzeugt wird eine Zeichenkette von 80 Zeichen Breite auch wenn der Textinhalt deutlich kleiner ist Die restlichen Zeichen sind Leerzeichen Z n Erzeugt ASCII Zeichen Zeichenwerte 0 127 und ist daher für Textdaten geeignet n ist eine Zahl für die Feldbreite Ungenutzte Bytes werden mit Zeichenwert 0 Hex 0 aufgefüllt Außerdem wird der String in jedem Fall nullterminiert d h das letzte Zeichen hat immer den Zeichenwert 0 Hex 0 Ansonsten wie A Ausgabe pack A80 kleine Zeile Erzeugt wird eine Zeichenkette von 80 Zeichen Breite auch wenn der Textinhalt deutlich kleiner ist Die restlichen Zeichen haben den Wert hexadezimal 0 b n Erzeugt einen Bit String in aufsteigender Bitreihenfolge Das letzte Bit jedes Bytes der Eingabe ergibt ein Bit der Ausgabe Dabei wird das letzte 8 bit Tupel gegebenenfalls mit Nullen aufgefüllt Ausgabe pack b8 Beispiel Erzeugt eine Zeichenkette von 8 Bit also einem Byte Länge B n Erzeugt einen Bit String in absteigender Bitreihenfolge Arbeitet genauso wie b dreht aber die Reihenfolge um Ausgabe pack B8 Beispiel Erzeugt eine Zeichenkette von 8 Bit also einem Byte Länge c n Erzeugt Zeichen aus numerischen Angaben Das kleine c steht für signed char verarbeitet werden 8 Bit lange Ganzzahlen zwischen 128 und 127 n ist eine Zahl für die Anzahl Zeichen Wenn Sie mehrere Zeichen auf einmal verarbeiten wollen geben Sie die Anzahl der Zeichen an Anstelle einer Zahl ist auch erlaubt Benutzen Sie den Platzhalter wenn Sie eine unbestimmte Anzahl Zeichen verarbeiten wollen Zeichenwerte 65 115 116 114 105 100 Ausgabe pack c6 Zeichenwerte print Ausgabe Das Beispiel erzeugt eine Liste aus 6 Zahlen Mit c6 werden alle 6 Zahlen in ihre Zeichenwerte gemäß der ASCII Codetabelle umgewandelt und in der Zeichenkette Ausgabe zusammengefügt C n Erzeugt Zeichen aus numerischen Angaben Das große C steht für unsigned char verarbeitet werden 8 Bit lange Ganzzahlen ohne Vorzeichen also zwischen 0 und 255 Ansonsten wie c Zeichenwerte 65 115 116 114 105 100 Ausgabe pack C6 Zeichenwerte print Ausgabe siehe Erläuterung zu c s n Erzeugt Zeichen aus numerischen Angaben Das kleine s steht für signed short Verarbeitet werden dabei in Perl 16 Bit lange Ganzzahlen zwischen 32768 und 32767 Ansonsten wie c Werte 1000 1000 Ausgabe pack s2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 Zahlen Mit s2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt S n Erzeugt Zeichen aus numerischen Angaben Das große S steht für unsigned short Verarbeitet werden dabei in Perl 16 Bit lange Ganzzahlen zwischen 0 und 65535 Ansonsten wie s Werte 1 1000 Ausgabe pack S2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 Zahlen Mit S2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt i n Erzeugt Zeichen aus numerischen Angaben Das kleine i steht für signed integer Verarbeitet werden dabei in Perl mindestens 32 Bit lange Ganzzahlen zwischen 2147483648 und 2147483647 je nach Umgebung werden auch höhere Bitlängen und damit größere Zahlen verarbeitet Ansonsten wie c Werte 100000 100000 Ausgabe pack i2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 großen Zahlen Mit i2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt I n Erzeugt Zeichen aus numerischen Angaben Das große I steht für unsigned integer Verarbeitet werden dabei in Perl mindestens 32 Bit lange Ganzzahlen zwischen 0 und 429496729 6 5 je nach Umgebung werden auch höhere Bitlängen und damit größere Zahlen verarbeitet Ansonsten wie i Werte 1 100000 Ausgabe pack I2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 Zahlen Mit I2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt l n Erzeugt Zeichen aus numerischen Angaben Das kleine l steht für signed long Verarbeitet werden dabei in Perl genau 32 Bit lange Ganzzahlen zwischen 2147483648 und 2147483647 Ansonsten wie c Werte 100000 100000 Ausgabe pack l2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 großen Zahlen Mit l2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt L n Erzeugt Zeichen aus numerischen Angaben Das große L steht für unsigned long Verarbeitet werden dabei in Perl genau 32 Bit lange Ganzzahlen zwischen 0 und 4294967295 Ansonsten wie l Werte 1 100000 Ausgabe pack L2 Werte print Ausgabe Das Beispiel erzeugt eine Liste aus 2 Zahlen Mit L2 werden die Zahlen in Zeichen oder Zeichenkombinationen umgewandelt und in der Zeichenkette Ausgabe zusammengefügt n n Erzeugt aus einer Zahl eine Binärspeicherung in der so genannten Network Byte Order auch Big Endian Order Verarbeitet werden dabei 16 Bit lange Ganzzahlen zwischen 0 und 65535 Wenn Sie mehrere Zahlen auf einmal verarbeiten wollen geben Sie die Anzahl der Zahlen an Anstelle einer Zahl ist auch erlaubt Benutzen Sie den Platzhalter wenn Sie eine unbestimmte Anzahl Zahlen verarbeiten wollen IP mit Port pack Nn 0xC19EAAC7 80 In dem Skalar IP mit Port wird die IP Adresse 193 158 170 199 und die Zahl 80 die für den Port des Webservers stehen soll gespeichert Die IP Adresse wird dabei als 32 Bit lange Zahl in Hexadezimalschreibweise mit N verarbeitet die Zahl für den Port die kleiner ist mit n N n Erzeugt aus einer Zahl eine Binärspeicherung in der so genannten Network Byte Order auch Big Endian Order Verarbeitet werden dabei 32 Bit lange Ganzzahlen zwischen 0 und 4294967295 Ansonsten wie n IP pack N 0xC19EAAC7 In dem Skalar IP wird die IP Adresse 193 158 170 199 gespeichert Die IP Adresse wird dabei als 32 Bit lange Zahl in Hexadezimalschreibweise mit N verarbeitet Dezimal Hexadezimal 193 C1 158 9E 170 AA 199 C7 v n Erzeugt aus einer Zahl eine Binärspeicherung in der so genannten VAX Byte Order auch Little Endian Order Verarbeitet werden dabei 16 Bit lange Ganzzahlen zwischen 0 und 65535 Ansonsten wie n Wert pack v 0xFFFF In dem Skalar Wert wird der höchstmögliche Wert gespeichert den v verarbeitet in Hexadezimalschreibweise als FFFF ausgedrückt V n Erzeugt aus einer Zahl eine Binärspeicherung in der so genannten VAX Byte Order auch Little Endian Order Verarbeitet werden dabei 32 Bit lange Ganzzahlen zwischen 0 und 4294967295 Ansonsten wie n Wert pack V 0xFFFFFFFF In dem Skalar Wert wird der höchstmögliche Wert gespeichert den v verarbeitet in Hexadezimalschreibweise als FFFFFFFF ausgedrückt f n Erzeugt eine binär gespeicherte Fließkommazahl Die genaue Art der Speicherung ist vom Computertyp abhängig Das kleine f steht für float und zwar mit single precision also einfacher Genauigkeit Ansonsten wie n Wert pack f 1 7 In einem Skalar Wert wird das Ergebnis der Division von 1 durch 7 binär als Fließkommazahl gespeichert d n Erzeugt eine binär gespeicherte Fließkommazahl Die genaue Art der Speicherung ist vom Computertyp abhängig Das kleine d steht für double float also mit double precision doppelter Genauigkeit Ansonsten wie n Wert pack d 1 7 In einem Skalar Wert wird das Ergebnis der Division von 1 durch 7 binär als doppelt genaue Fließkommazahl gespeichert p n Speichert die Arbeitsspeicheradresse einer nullterminierten Zeichenkette wie sie in C üblich ist Wenn Sie mehrere Zeichenketten auf einmal verarbeiten wollen geben Sie die Anzahl der Zeichenketten an Anstelle einer Zeichenkette ist auch erlaubt Benutzen Sie den Platzhalter wenn Sie eine unbestimmte Anzahl Zeichenketten verarbeiten wollen Namen Hans Peter Stefan Anzahl Namen Werte pack p x Anzahl Namen irgendeineFunktion Anzahl Werte In einem Skalar Anzahl wird die Anzahl der Elemente von Namen gespeichert Dann wird die Liste Namen zu einem einzelnen String von Adressen gepackt und in Werte gespeichert Anzahl und Werte werden dann einer Funktion übergeben P n Speichert die Arbeitsspeicheradresse einer Struktur struct mit fester Bytelänge Ansonsten wie p use C DynaLib Struct Define C DynaLib Struct Adresse pppi qw name ort strasse nummer Ausgabe pack P struct Zunächst wird eine Struktur erstellt wie sie C beispielsweise versteht In dem Skalar Ausgabe wird dann die Adresse der Struktur gespeichert u n Erzeugt aus binären Daten eine UU kodierte Zeichenkette UU Encode ist eines der Verfahren zum Umwandeln von 8 Bit Daten Bytes in ein 7 Bit Schema Attachments von E Mails wurden früher beispielsweise UU kodiert übertragen UUDaten pack u 1234 Die Zahl 1234 ein binärer Wert auf 8 Bit Basis wird durch das UU basierte Kodieren in Zeichen auf 7 bit Basis umgewandelt x n Erzeugt ein Byte mit dem Wert 0 ohne dafür ein Argument aus der Übergabeliste zu verbrauchen Kette pack A x A x Test beispiel Erzeugt aus den beiden Zeichenketten Test und beispiel eine Zeichenkette die beide Teilstrings jeweils nullterminiert enthält X n Geht n Byte im Ergebisstring zurück und löscht diese Stefan pack A X2 Stefanie Die Anweisung erzeugt zunächst mit A das Ergebnis Stefanie und entfernt dann die letzten beiden Bytes Das Endergebnis ist dann Stefan n Bringt den vorläufigen Ergebnisstring auf eine Länge von genau n Bytes Ist der String zu lang wird er einfach abgeschnitten ist er zur kurz wird er mit Null Bytes aufgefüllt Danach wird der Formatstring ganz normal weiterbearbeitet Walkman pack A 3 A Walross kman Die Anweisung erzeugt zunächst mit A das vorläufige Ergebnis Walross welches dann mit 3 auf drei Zeichen also Wal gekürzt wird Anschließend wird noch kman angehängt Das Endergebnis ist Walkman pos Position der Anwendung von m regexp g auf Zeichenkette ermitteln Reguläre Ausdrücke vom Typ m regexp g oder einfach regexp g können Zeichenketten nach allen Stellen durchsuchen auf die der angegebene Ausdruck passt Die Funktion pos liefert diejenige Position innerhalb der zu durchsuchenden Zeichenkette zurück bei der die Suche beim jeweils nächsten Aufruf des regulären Ausdrucks fortfahren würde Durch geschickte Verarbeitung innerhalb einer Schleife können mit Hilfe dieser Funktion alle Positionen innerhalb der gesamten Zeichenkette gefunden werden Sie können diesen Wert auch ändern um die Suche zu beeinflussen Erwartet als Parameter 1 die zu durchsuchende Zeichenkette bzw den Skalar in dem diese gespeichert ist Gibt die nächste gefundene Position zurück bei der die Suche fortfährt Die Zeichen davor passen auf das Suchmuster Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional

    Original URL path: http://html.ekiwi.de/perl/funktionen/zeichenketten.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Perl-Sprachelemente / CGI-notwendige Anweisungen in Perl
    n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Hallo Welt title head body n print h1 Text h1 n print body html n Erläuterung Für den HTML Code den ein Perl Script als CGI Script ausgeben lassen soll ist die Perl Funktion print geeignet Zum Senden gibt das Perl Script einfach mit der print Funktion Daten aus Die erste dieser print Anweisungen die ein CGI Script enthalten muss ist jedoch diejenige für den HTTP Header Die einfachste Form eines HTTP Headers besteht schlicht aus dem Befehl Content type und der Angabe eines MIME Typs für die nachfolgenden Daten Da das CGI Script HTML Code an den Browser senden will benutzt es den MIME Typ für HTML nämlich text html Weiterhin muss ein HTTP Header zwei abschließende Steuerzeichen für Zeilenumbruch enthalten In Perl lässt sich ein solcher Zeilenumbruch durch die Zeichenfolge n erzeugen Durch die Anweisung print Content type text html n n wird also ein vollständiger HTTP Header erzeugt der dem Browser signalisiert dass Daten vom Typ HTML folgen Für eine vollständige HTTP Kommunikation sind freilich noch mehr HTTP Headerzeilen notwendig die fehlenden Angaben werden dann von der CGI Schnittstelle bzw vom Webserver ergänzt Anschließend wird mit einzelnen print Anweisungen eine vollständige kleine HTML Datei an den Browser gesendet Bei den einzelnen print Anweisungen ist am Ende übrigens immer ein Zeilenumbruch Zeichen n notiert Dies hat eher kosmetische Gründe Dadurch wird im erzeugten HTML Quelltext jeweils eine neue Zeile begonnen Wenn diese Steuerzeichen fehlen würden dann würde Perl den gesamten HTML Code in eine Textzeile schreiben und falls Sie sich diesen Quelltext in Ihrem Browser anschauen möchten sehen Sie einen absatzlosen Brei aus Buchstaben und Zahlen der sehr schwer lesbar ist Bei der Variante oben wird der HTML Quelltext dagegen nach jeder print Anweisung umbrochen Innerhalb der h1 Überschrift wird im obigen Beispiel eine Variable ausgegeben nämlich der Skalar Text Sie können innerhalb von print Ausgaben einfach solche Variablen einfügen An der entsprechenden Stelle wird dann der aktuelle Wert der Variablen ausgegeben Im obigen Beispiel wird dem Skalar Text weiter oben im Script der Wert Hallo Welt zugewiesen Dieser Wert wird an der Stelle wo Text im auszugebenden HTML Code notiert ist eingesetzt Inhalte senden alternative Form Die vielen einzelnen print Anweisungen sind bei längeren Ausgaben lästig Es gibt deshalb auch eine elegantere Form der Ausgabe größerer HTML Code Abschnitte Beispiel eines vollständigen CGI Scripts Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Einleitung Es geht auch so print Content type text html n n print ENDE html head title Testausgabe title head body h1 Einleitung h1 p Der Vorteil bei dieser Form ist dass man viel HTML Code auf einmal erzeugen kann ohne einen einzigen weiteren print Befehl in Perl zu notieren Praktisch beispielsweise auch zum Ausgeben von JavaScript p script type text javascript document write p Und die Adresse dieser

    Original URL path: http://html.ekiwi.de/perl/sprache/cginotwendig.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Perl-Sprachelemente / Sprungbefehle
    Anweisungsblock ein Innerhalb dieses Anweisungsblocks der wie üblich mit geschweiften Klammern und markiert wird können Sie beliebige Anweisungen notieren Wenn ein solcher continue Block unmittelbar hinter einem Schleifenblock steht wird er mit jedem Schleifendurchlauf ebenfalls durchlaufen und dann außer beim allerersten Durchlauf direkt vor der Prüfung der Schleifenbedingung ausgeführt Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title n print head body n my i 1 while i 100 next if i 7 0 print i ist durch 7 teilbar br n continue i print body html n Erläuterung Das Beispiel gibt alle Zahlen zwischen 1 und 100 aus die durch 7 teilbar sind Dabei wird eine while Schleife verwendet deren Bedingung abfragt ob i kleiner gleich 100 ist Da i mit 1 initialisiert wird wird der Schleifenblock also erreicht Innerhalb des Schleifenblocks wird i jedoch nicht hochgezählt was zu einer hoffnungslosen Endlosschleife führen würde Doch dazu dient im Beispiel der continue Block der nach der abschließenden geschweiften Klammer des Schleifenblocks folgt Innerhalb des continue Blocks wird i hochgezählt Innerhalb der Schleife wird mit der Bedingung i 7 0 abgefragt ob der aktuelle Wert von i durch 7 geteilt den Rest 0 ergibt siehe Modulo Division bei den Berechnungsoperatoren Durch next wird zwar sofort der nächste Schleifendurchgang gestartet wenn die Zahl nicht ohne Rest durch 7 teilbar ist doch die Anweisung aus dem continue Block wird in jedem Fall noch ausgeführt last Der Sprungbefehl last bricht eine Schleife sofort ab Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Testausgabe title n print head body n my jetzt while 1 jetzt time last if jetzt 2 0 print jetzt n print body html n Erläuterung Das Beispiel Script ermittelt mit der Funktion time innerhalb einer klassischen Endlosschleife formuliert mit while 1 Bedingung ist immer wahr den aktuellen Zeitwert in Sekunden und speichert ihn in dem Skalar jetzt Mit der Bedingung i 2 0 wird abgefragt ob der aktuelle Wert von jetzt durch 2 geteilt den Rest 0 ergibt siehe Modulo Division bei den Berechnungsoperatoren Ist diese Bedingung der nachgestellten if Anweisung erfüllt wird der voranstehende last Befehl ausgeführt Die Schleife wird dann abgebrochen Falls das Script also zu einem Zeitpunkt mit ungeradem Sekundenwert aufgerufen wird wird so oft der aktuelle Sekundenwert ausgegeben bis time den nächsthöheren Sekundenwert zurückliefert redo Der Sprungbefehl redo wiederholt den aktuellen Schleifendurchlauf einfach noch einmal Dabei wird die Schleifenbedingung nicht noch einmal ausgewertet Beispiel der Textdatei text txt das ist eine Datei

    Original URL path: http://html.ekiwi.de/perl/sprache/sprungbefehle.htm (2016-04-25)
    Open archived version from archive

  • SELFHTML: Perl / Funktionsreferenz / Funktionen für Listen bzw. Arrays und Hashes
    Teil auch Großbuchstaben Anschließend wird die Funktion map auf die Liste angewendet Dabei wird die Funktion lc auf alle Elemente der Liste angewendet die eine Kleinschreibung aller Zeichen erzwingt Zur Kontrolle gibt das Beispiel HTML Code mit den Elementen der bearbeiteten Liste aus pop letztes Element eines Arrays löschen Entfernt aus einem Array das letzte Element Der Array wird um ein Element verkürzt Erwartet als Parameter 1 den Array Gibt das gelöschte Element zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Satz Was du heute kannst besorgen das verschiebe nicht auf morgen my Satzlaenge length Satz my Zeichen for my i 0 i Satzlaenge i Zeichen i substr Satz i 1 print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n for my i 0 i Satzlaenge i print Zeichen br n pop Zeichen print body html n Erläuterung Das Beispiel definiert einen Satz und extrahiert alle einzelnen Zeichen daraus in einen Array Erläuterung dazu siehe Funktion substr Das Beispiel erzeugt HTML Code Dabei wird in einer for Schleife die so oft durchlaufen wird wie die Anzahl Zeichen im ursprünglichen Satz beträgt jeweils der gesamte Array Zeichen ausgegeben Der Array wird jedoch bei jedem Schleifendurchgang mit Hilfe der Funktion pop um das letzte Element verkürzt So wird bei jedem Schleifendurchgang jeweils ein Zeichen des Satzes weniger ausgegeben push Elemente an einen Array anhängen Fügt ein oder mehrere neue Elemente an das Ende eines Arrays an Erwartet als Parameter 1 den Array an den das Element angehängt werden soll 2 bis n ein oder mehrere anzuhängende Elemente Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Orte Wien Madrid Rom Stockholm Riga my NeueOrte Paris Lissabon Sofia foreach NeueOrte push Orte Orte sort Orte print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n foreach Orte print br n print body html n Erläuterung Im Beispiel werden zwei Listen definiert Orte und NeueOrte In einer foreach Schleife werden die Elemente der Liste NeueOrte der Reihe nach an die Liste Orte angehängt Mit Hilfe der Funktion sort wird die neue Liste mit allen Orten dann noch asciibetisch nach der Reihenfolge der Zeichen in der ASCII Codetabelle sortiert Das Beispiel gibt die gesamte neue Liste zur Kontrolle als HTML Code aus reverse Reihenfolge der Listenelemente umkehren Dreht eine Liste so um dass das erste Element hinterher das letzte ist das zweite das zweitletzte usw Erwartet als Parameter 1 die gewünschte Liste Gibt die bearbeitete Liste zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Zahlen 1 100 Zahlen reverse Zahlen print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n foreach Zahlen print br n print body html n Erläuterung Das Beispiel definiert eine Liste mit Zahlen von 1 bis 100 Anschließend wird die Funktion reverse auf die Liste angewendet sodass darin die Elemente von 100 bis 1 gespeichert sind Zur Kontrolle wird HTML Code mit der bearbeiteten Liste ausgegeben Beachten Sie Die Funktion ist auch auf Hashes anwendbar Beispiel Mailheader reverse Mailheader Dabei werden die Schlüssel und Werte der Elemente miteinander vertauscht Dies ist jedoch dann problematisch wenn ein Hash mehrere gleiche Werte besitzt In diesem Fall wird im bearbeiteten Hash nur noch einer der Werte der nun als Schlüssel dient berücksichtigt shift erstes Element eines Arrays löschen Entfernt das erste Element eines Arrays Das zweite ist anschließend das erste usw Der Array wird um ein Element kürzer Erwartet als Parameter 1 den zu bearbeitenden Array Gibt das gelöschte Element zurück Beispiel eines vollständigen CGI Scripts in Perl Anzeigebeispiel So sieht s aus Zum Aufruf des Scripts ist eine Internet Verbindung erforderlich usr bin perl w use strict use CGI Carp qw fatalsToBrowser my Zustaende Angst Melancholie Trauer Wut Zwiespalt Hass print Content type text html n n print DOCTYPE HTML PUBLIC W3C DTD HTML 4 01 Transitional EN n print html head title Test Ausgabe title head body n my max Zustaende for my i 0 i max i print p jetzt herrscht noch Zustaende br n shift Zustaende print p und jetzt herrscht Friede p n print body html n Erläuterung Das Beispiel definiert einen Array der die Namen unangenehmer seelischer Zustände auflistet Innerhalb des HTML Codes ist eine for Schleife notiert Sie wird so oft durchlaufen wie der ursprüngliche Array Elemente hat Dazu wird die Länge der Liste in dem Skalar max gespeichert Bei jedem Schleifendurchgang wird ausgegeben welche der unangenehmen Seelenzustände noch herrschen Bei jedem Schleifendurchgang wird aber die erste dieser Befindlichkeiten aus dem Array mit shift gelöscht Dadurch wird der Array immer kleiner und die Stimmung immer aufgehellter Am Ende ist die Seelenwelt wieder in Ordnung Dann wird auch die Schleife beendet und es wird noch ein triumphierender Satz ausgegeben Beachten Sie Die Funktion shift wird in der Praxis auch gerne dazu verwendet innerhalb von Subroutinen übergebene Parameter abzuarbeiten Ein Beispiel finden Sie im Abschnitt über Subroutinen mit Parametern aufrufen sort Listenelemente sortieren Sortiert die Elemente einer Liste Dabei gibt es zwei Möglichkeiten Entweder Sie sortieren die Liste nach dem vorgegebenen Sortier Algorithmus Dieser sortiert alphabetisch genauer gesagt asciibetisch nach der Reihenfolge der Zeichen in der ASCII Codetabelle Oder Sie erzwingen einen eigenen Sortier Algorithmus Dazu definieren Sie beispielsweise eine Subroutine die den entsprechenden Algorithmus leistet Wichtig ist dies etwa um Listenelemente numerisch zu sortieren

    Original URL path: http://html.ekiwi.de/perl/funktionen/listenhashes.htm (2016-04-25)
    Open archived version from archive



  •