Der Perl Programmierer - Perl lernen - Professionell anwenden - Lösungen nutzen

Jürgen Plate

Der Perl Programmierer

Perl lernen - Professionell anwenden - Lösungen nutzen

2010

1234 Seiten

Format: PDF, Online Lesen

E-Book: €  47,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446424494

 

12 Packages (S. 321-322)

Sie haben einige Funktionen geschrieben, um beispielsweise Daten einer Datenbank als HTML-Tabelle auszugeben. Weil Sie diese Funktionen öfter brauchen, stehen sie in einer eigenen Datei und werden als Modul ins aktuelle Programm eingebunden wie es in Kapitel 5 auf den Seiten 207ff beschrieben wurde. Im Programm selbst findet sich nun unglücklicherweise eine Funktion mit dem gleichen Namen wie eine Funktion in der externen Datei. Das Problem: Es gibt zwei verschiedene Funktionen mit dem gleichen Namen, was eher suboptimal ist. Wenn Sie sich jetzt vorstellen, dass mehrere Programmierer an einen Gesamtsystem arbeiten, sind solche Doubletten häufig die Regel.

Sie erinnern sich noch an Teil 1? Der Gültigkeitsbereich einer Variablen bezieht sich darauf, in welchen Bereichen eines Programms man auf eine Variable oder Funktion zugreifen kann. Von einem globalen Gültigkeitsbereich spricht man, wenn eine Variable im gesamten Programm verfügbar ist und so lange existiert, wie dieses ausgeführt wird. Von einem lokalen Gültigkeitsbereich spricht man hingegen, wenn eine Variable nur begrenzt gültig ist, z. B. nur innerhalb einer Funktion.

Die beste Möglichkeit, Namenskonflikte durch globale Variablen zu umgehen, besteht im Verzicht auf globale Variablen. Unterprogramme haben durchweg lokale Variablen, Werte werden gegebenenfalls über Parameter weitergereicht. Manche Softwareentwickler glauben, dies sei die Lösung aller Probleme, und das Vermeiden von globalen Variablen entspräche professionellem Softwaredesign. In der Realität werden globale Variablen aber eingesetzt. Solange man das nicht übertreibt, ist das auch durchaus in Ordnung.

12.1 Namenskonflikte mit Packages auflösen

Perl stellt mit seinen Packages (Pakete) einen Mechanismus zur Verfügung, der die Definition verschiedener, sich nicht überlappender Namensbereiche ermöglicht. Dies ist die Grundlage für die Verwendung von Perl-Bibliotheken und für die Entwicklung größerer Programmsysteme (Modularisierung). Außer einer handvoll spezieller Variablen gibt es in Perl im Prinzip keine globalen Variablen, da jede Variable automatisch dem (implizit immer vorhandenen) Package main zugeordnet ist. Mit der package-Anweisung wählt der Programmierer den gewünschten Namensraum für seine Variablen und Funktionen aus. Der Gültigkeitsbereich einer package-Anweisung beginnt bei dieser Anweisung und endet am Ende des umgebenden Blockes. Variablen eines anderen Packages können unter Angaben des Package-Namens mit folgender Notation referenziert werden:

$Packagename::Variable

Bei Perl 4 war noch die Notation $Packagename’Variable möglich, die man heute nicht mehr einsetzen sollte. Die package-Anweisung wird häufig an den Anfang einer Datei gesetzt, die ein anderes Programm dann mittels require-Anweisung einbindet. Das Prinzip der Packages besteht darin, dass für jedes Paket ein eigener Satz von Variablennamen existiert, der bestimmt, ob eine Variable für Perl verfügbar ist und wie der aktuelle Wert der Variablen lautet. Dies nennt sich „Symboltabelle“. Sie enthält alle Namen, die Sie möglicherweise in Ihrem Programm verwenden: Skalare, Arrays, Hashes und Funktionen.

 

© 2009-2021 ciando GmbH