Embperl - building dynamic websites with Perl


Gültigkeitsbereiche von Variablen und Cleanup
[ << Prev: Syntax ] [ Content ] [ Next: Vordefinierte Variablen >> ]

Der Gültigkeitsbereich von Variablen, die mit my oder local deklariert wurden, endet am Ende des umschließenden [+/- ... -/+] Blocks. Der [+/- ... -/+] Block verhält sich in dieser hinsicht wie Perls { ... }.

Globale Variablen (alles was nicht mittels my oder local deklariert wurde) werden am Ende jedes Request automatisch wieder gelöscht (insofern verhalten sie sich wie Variablen, deren Gültigkeitsbereich das gesamte Dokument ist). Dies verhindert Probleme mit Variablen, die ihren Wert aus dem vorangegangenen Request behalten haben. Das Cleanup wird nur für Variablen innerhalb des Packages, der gerade ausgeführten Embperlseite, durchgeführt, d.h. alle Variablen die ohne expliziten Packagenamen deklariert wurden. Alle Variablen in anderen Packages (z.B. andere Perl Module) bleiben gültig.

Der Packagename der aktuellen Seite wird normalerweise von Embperl eindeutig vergeben, kann aber mittels EMBPERL_PACKAGE explizit angegeben werden.

Da CGI Skripte sowieso immer als eigenständiger Prozeß ausgeführt werden, ist ein Cleanup bei CGI Skripten nicht nötig.

Sollen Variablen nicht am Ende des Request aufgeräumt werden, müssen sie entweder im Hash %CLEANUP (mit Wert 0) eingetragen sein oder innerhalb eines anderen Packages (z.B. $Persistent::handle) deklariert werden.

Wenn Sie das strict Pragma (use strict) nutzen wollen, können sie Ihre Variablen mittels des var Meta-Commands deklarieren.

HINWEIS: Da Apache::DBI, wie jedes andere Perlmodul, seinen eigenen Namensraum hat, funktioniert es ohne Problem zusammen mit Embperl.

Das automatische Cleanup kann mittels EMBPERL_OPTIONS bzw. dem cleanup Parameter der Execute Funktion abgeschaltet werden.

Ausnahmen für Variablen, die nicht oder zusätzlich aufgeräumt werden sollen, können mittels des Hash %CLEANUP angegeben werden.

Es ist ebenfalls möglich eine Funktion aufrufen zulassen, wenn Embperl sein Cleanup durchführt. Soweit definiert, wird die Funktion CLEANUP aufgerufen, direkt bevor die weiteren Variablen aufgeräumt werden.

 Beispiel:

  [! sub CLEANUP { $obj -> term ; } !]

[ << Prev: Syntax ] [ Content ] [ Next: Vordefinierte Variablen >> ]


© 1997-2023 Gerald Richter / actevy