Home : Dokumentation : 1.3.6 Dokumentation : HTML::Embperl
Google Web perl.apache.org

 
Home
 
Features
 
Einführung
 
Dokumentation
 
README
 
README.v2
 
Konfiguration
 
Embperl
 
Embperl::Object
 
Embperl::Form::Validate
 
Embperl::Syntax
 
Embperl::Recipe
 
Embperl::Mail
 
1.3.6 Dokumentation
 
HTML::Embperl
 
HTML::EmbperlObject
 
HTML::Embperl::Mail
 
HTML::Embperl::Session
 
Tips & Tricks
 
FAQ
 
DBIx::Recordset
 
Installation
 
Download
 
Support
 
Änderungen
 
Wiki
 
Weitere Infos
 
Hinzufügen Infos
 
Login

    Stable 2.4.0
    Beta 2.5.0_3
Unterstützen Sie Embperl! Mehr...
Aufrufen/Konfigurieren von Embperl
[ << Prev: DESCRIPTION ] [ Content ] [ Next: Runtime Konfiguration >> ]



mod_perl Konfigurationtop

Um HTML::Embperl als content handler unter mod_perl laufen zu lassen, sind folgende Zeilen in der Apache Konfigurationsdatei httpd.conf nötig:

Beipiel für Apache httpd.conf:

    SetEnv EMBPERL_DEBUG 2285

    <Location /embperl/x>
        SetHandler  perl-script
        PerlHandler HTML::Embperl
        Options     ExecCGI
    </Location>

Diese Konfiguration bewirkt, dass mod_perl Embperl für alle Dateien, die im Unterverzeichnis, das mittels der URI <l>/embperl/x</l> angesprochen wird, liegen, als content handler aufruft. Embperl kann dann die Datei entsprechend bearbeiten und das Ergebnis zum Browser schicken.

Eine andere Möglichkeit ist, alle Dateien mit einer bestimmten Endung von Embperl bearbeiten zu lassen. Eine Konfiguration dafür würde wie folgt aussehen:

    SetEnv EMBPERL_DEBUG 2285

    <Files *.epl>
        SetHandler  perl-script
        PerlHandler HTML::Embperl
        Options     ExecCGI
    </files>

    AddType text/html .epl

HINWEIS: Wenn mod_perl mit USE_DSO übersetzt ist, darf Embperl nicht beim Starten des Server geladen werden!



Andere Arten Embperl zu nutzentop

Embperl kann ebenso von der Befehlszeile aus aufgerufen werden oder als normales CGI Skript ausgeführt werden. Weiterhin können andere Perlprogramme oder -module es direkt aufrufen.

Der Aufruf von der Befehlszeile sieht folgendermaßen aus (erste Zeile Unix, zweite Zeile Windows):

embpexec.pl [-o outputfile] [-l logfile] [-d debugflags] htmlfile [query_string]

embpexec.bat [-o outputfile] [-l logfile] [-d debugflags] htmlfile [query_string]

 

htmlfile

 

Datei welche von Embperl bearbeitet werden soll.

 

query_string

 

Optional. Hat die selbe Bedeutung wie die Umgebungsvariable QUERY_STRING eines CGI Skripts. QUERY_STRING beinhaltet alles nach dem ersten "?" in der URL. query_string sollte URL kodiert sein. Default ist kein query_string.

 

-o outputfile

 

Optional. Gibt den Dateinamen an, in den das Ergebnis geschrieben wird. Default ist die Standardausgabe.

 

-l logfile

 

Optional. Name der Logdatei. Default ist /tmp/embperl.log.

 

-d debugflags

 

Optional. Gibt an, welche Debuginformationen in die Logdatei geschrieben werden. (siehe EMBPERL_DEBUG für mögliche Werte)

Um Embperl als CGI Skript zu nutzen, müssen Sie die Datei embpcgi.pl (bzw. embpcgi.bat unter Windows) in Ihr CGI Verzeichnis kopieren (oft /cgi-bin). Zur Benutzung mit FastCGI zusammen, verwenden Sie die Datei embpfastcgi.pl. Zum Aufrufen verwenden Sie die URL

 http://www.domain.de/cgi-bin/embpcgi.pl/uri/ihres/embperl/dokuments

Die extra Pfadinformationen die embpcgi.pl übergeben werden, geben dabei den Ort des Embperl Dokuments an.

Unter Apache kann embpcgi.pl auch als Handler definiert werden:

    <Directory /pfad/zu/ihren/embperl/dokumenten>
    Action text/html /cgi-bin/embperl/embpcgi.pl
    </Directory>

HINWEIS 1 Die Datei embpexec.pl darf aus Sicherheitsgründen nicht mehr als CGI Skript genutzt werden!

HINWEIS 2: Um die Sicherheit von CGI Skripten sicher zustellen, empfiehlt es sich mittels EMBPERL_ALLOW den Zugriff zu beschränken.



Embperl aus Embperl Dokumenten oder anderen Perl Programmen/Modulen aufrufentop

Die Funktion Execute kann genutzt werden, um Embperl aus anderen Perlmodulen oder -programmen aufzurufen. Ebenso ist es möglich andere Dokumente (z.B. Kopf- oder Fußzeilen) in Embperlseiten einzufügen.

Die Kurzform müssen lediglich Dateinamen und ggf. Parameter für das aufzurufende Dokument als Argumente angegeben werden:

  Execute ($filename, @params) ;

Die Langform erwartet eine Referenz auf einen Hash als Argument:

  Execute (\%params) ;

Die Kurzform entspricht folgendem Aufruf in der Langform:

  Execute ({inputfile => $filename,
            param     => \@params}) ;

Parameter für die Langform sind:

 

inputfile

 

Mittels inputfile wird die Datei angegeben, die von Embperl bearbeitet werden soll. Ist der Parameter input ebenso vorhanden, sollte inputfile einen eindeutigen Namen spezifizieren. Jedesmal wenn Embperl den selben Namen sieht, geht es davon aus, daß die Quelle die selbe ist und verwendet den selben Packagenamen, sowie compiliert die Perlteile nur wenn mtime sich ändert oder undefiniert ist.

 

sub

 

Ruft die durch diesen Parameter angegebene Funktion auf (siehe auch [$ "sub" $]). Momentan muß die Funktion entweder in der selben Embperldatei definiert sein oder die Embperldatei muß vorher importiert worden sein.

 

input

 

Referenz auf einen Skalar, welcher den Quellentext enthält. inputfile sollte ebenso angegeben werden, um die Quelle zu benennen. Der Name kann dabei beliebiger Text sein.

 

mtime

 

Zeitpunkt der letzten Änderung des Quellentextes. Der Quellentext wird nur dann neu übersetzt, wenn sich mtime ändert oder wenn mtime undef ist.

 

outputfile

 

Datei, in die die Ausgabe geschrieben wird. Ist keine Datei angegeben, wird die Standardausgabe benutzt.

 

output

 

Referenz auf einen Skalar, in welchen die Ausgabe geschrieben werden soll.

 

import

 

Ein Wert von Null veranlasst Embperl die Seite nicht auszuführen, sondern alle darin enthaltenen Funktionen zu definieren. Dies ist nötig, um sie mittels des sub Parameters der Execute Funktion aufrufen zu können oder als Vorbereitung für einen späteren Import.

Ein Wert von Eins veranlasst Embperl die Seite nicht auszuführen, sondern alle darin enthaltenen Funktionen zu definieren und diese in das aktuelle Package zu importieren.

Siehe auch [$ sub $] Metacommand.

 

cleanup

 

Dieser Wert gibt an, ob and wann das "Cleanup" des Packages ausgeführt werden soll. (Siehe auch Variablen Gültigkeitsbereich und Cleanup)

 

cleanup = -1

 

Es wird kein Cleanup ausgeführt.

 

cleanup = 0 oder nicht spezifiziert

 

Unter mod_perl wird das Cleanup erst ausgeführt, nachdem die Verbindung zum Client beendet wurde, auch wenn Execute mehrfach während eines Request aufgerufen wird.

In allen anderen Fällen wird das Cleanup sofort ausgeführt.

 

cleanup = 1

 

Cleanup wird sofort ausgeführt.

 

param

 

Eine Referenz auf ein Array, um dem aufgerufenen Dokument Parameter zu übergeben.

 Beispiel:

    HTML::Embperl::Execute(..., param => [1, 2, 3]) ;
    HTML::Embperl::Execute(..., param => \@parameters) ;

ber das Array @param kann die aufgerufene Seite auf die Parameter zugreifen. Siehe eg/x/Excute.pl aus der Embperl Distribution für ein detailliertes Beispiel.

 

ffld and fdat

 

Kann benutzt werden, um die beiden Embperlvariablen @ffld und %fdat zu setzen.

 

firstline

 

Gibt die erste Zeilennummer der Quellendatei an (Default: 1)

 

options

 

Wie EMBPERL_OPTIONS (siehe unten), außer für Cleanup.

HINWEIS: optDisableFormData sollte gesetzt werden, wenn die Formulardaten eines POST Request bereits von der Standardeingabe eingelesen wurden, ansonsten versucht Execute die Daten ein zweites Mal einzulesen, was dazu führt, das der Request hängt.

 

debug

 

Wie EMBPERL_DEBUG (siehe unten).

 

escmode

 

Wie EMBPERL_ESCMODE (siehe unten).

 

package

 

Wie EMBPERL_PACKAGE (siehe unten).

 

virtlog

 

Wie EMBPERL_VIRTLOG (siehe unten). Wenn virtlog gleich uri ist, wird die Embperl Logdatei gesendet.

 

allow (ab 1.2b10)

 

Wie EMBPERL_ALLOW (siehe unten)

 

path (ab 1.3b1)

 

Wie EMBPERL_PATH (siehe unten)

 

uri

 

Die URI des Request. Wird nur für Virtlog Feature benötigt.

 

compartment

 

Wie EMBPERL_COMPARTMENT (siehe unten).

 

input_func

 

Wie EMBPERL_INPUT_FUNC (siehe unten). Zusätzlich ist es möglich eine Codereferenz anzugeben, die entsprechende Funktion wird dann als Eingabefunktion aufgerufen. Ebenso ist die Angabe einer Arrayreferenz möglich, wobei das erste Element dann die Codereferenz enthält und alle weiteren Elemente als Parameter der Funktion übergeben werden.

 

output_func

 

Wie EMBPERL_OUTPUT_FUNC (siehe unten). Zusätzlich ist es möglich eine Codereferenz anzugeben, die entsprechende Funktion wird dann als Ausgabefunktion aufgerufen. Ebenso ist die Angabe einer Arrayreferenz möglich, wobei das erste Element dann die Codereferenz enthält und alle weiteren Elemente als Parameter der Funktion übergeben werden.

 

cookie_name

 

Wie EMBPERL_COOKIE_NAME (siehe unten).

 

cookie_path

 

Wie EMBPERL_COOKIE_PATH (siehe unten).

 

cookie_domain

 

Wie EMBPERL_COOKIE_DOMAIN (siehe unten).

 

cookie_expires

 

Wie EMBPERL_COOKIE_EXPIRES (siehe unten).

 

errors

 

Erwartet eine Referenz auf ein Array. Nach der Rückkehr der Funktion enthält das Array alle Fehlermeldungen der aufgerufenen Seite, soweit welche aufgetreten sind.

 

object (ab 1.3.1b1)

 

Erwartet einen Dateinamen und liefert eine Hashreferenz zurück, die in das Package der Datei "geblessed" ist, d.h. die Hashreferenze kann dazu genutzt werden, um Funktionen die in der Datei definiert sind, also Methoden aufzurufen. Zusätzlich kann durch den isa Parameter (siehe unten) eine Vererbungshierachie zwischen Embperlseiten aufgebaut werden. Außerdem ist es möglich in dem Hash Objektdaten zu speichern.

  Beispiel:

  [# Die Datei eposubs.htm definiert zwei Funktionen: txt1 und txt2 #]
  [# Als erstes erstellen wir ein neues Objekt #]
  [- $subs = Execute ({'object' => 'eposubs.htm'}) -]

  [# Nun kann man Methoden aufrufen #]
  txt1: [+ $subs -> txt1 +] <br>

  txt2: [+ $subs -> txt2 +] <br>
 

isa (ab 1.3.1b1)

 

Erwarten den Namen einer Datei und schiebt den Packagename der Datei auf das @ISA Array der aktuellen Seite. Dadurch wird es möglich eine Vererbung zwischen Embperlseiten aufzubauen. Dies ist auch innerhalb von EmbperlObject hilfreich.

  Beispiel:

    [! Execute ({'isa' => '../eposubs.htm'}) !]
 

syntax (ab 1.3.2)

 

In der Version 1.3.x wird lediglich der Wert 'Text' akzetiert, dieser führt dazu, dass das Verhalten von Embperl 2.0 emuliert wird und der Text lediglich durchgereicht wird und keine Verarbeitung stattfindet.



Hilfsfunktionen für Executetop
 

HTML::Embperl::Init ($Logfile, $DebugDefault)

 

Diese Funktion dient dazu, die Logdatei sowie die Debugflags, die für die folgenden Aufrufe von Execute genutzt werden, zu setzen. Es kann immer nur eine Logdatei existieren, der Pfad kann jedoch jederzeit geändert werden.

 

HTML::Embperl::ScanEnvironment (\%params)

 

Durchsucht alle Umgebungsvariablen (%ENV) und setzt %params für die Benutzung von Execute. Alle Embperl Konfigurationsvariablen, außer EMBPERL_LOG, werden erkannt.



Beispiele für Execute:top
 # Quellentext steht unter /pfad/zu/seite.html und
 # das Ergebnis wird in /pfad/zu/ausgabe.html geschrieben

 HTML::Embperl::Execute ({ inputfile  => '/pfad/zu/seite.html',
                           outputfile => '/pfad/zu/ausgabe.html'}) ;
 # Quellentext steht in einem Skalar und das Ergebnis wird auf der
 # Standardausgabe ausgegeben
 # Vergessen Sie nicht, mtime zu ändern wenn $src sich ändert

 $src = '<html><head><title>Seite [+ $no +]</title></head>' ;

 HTML::Embperl::Execute ({ inputfile  => 'irgendein name',
                           input      => \$src,
                           mtime      => 1 }) ;

 # Quellentext steht in einem Skalar und das Ergebnis wird in
 # einen zweiten Skalar geschrieben
 
 my $src = '<html><head><title>Seite [+ $no +]</title></head>' ;
 my $out ;

 HTML::Embperl::Execute ({ inputfile  => 'anderer name',
                           input      => \$src,
                           mtime      => 1,
                           output     => \$out }) ;

 print $out ;
 # Einfügen eines gemeinsammen Kopfes in eine Embperlseite
 # der sich in /pfad/zu/kopf.html befindet
 
 [- Execute ('/pfad/zu/kopf.html') -]
 

[ << Prev: DESCRIPTION ] [ Content ] [ Next: Runtime Konfiguration >> ]

© 1997-2012 Gerald Richter / ecos gmbh