www.wikidata.de-de.nina.az
Ein Perl Modul ist eine separate Komponente eines Computerprogramms das in Perl geschrieben wurde Mechanismus der Einbindung und Verwendung von Perl ModulenEin Modul besitzt seinen Quellcode in einer Moduldatei der Endung pm die wiederum ein package beinhaltet also einen eigenen Namensraum was allerdings nicht zwingend erforderlich ist die Struktur des Paketnamens und damit des Namensraumnamens spiegelt das Dateisystem wider sodass das Modul Net FTP in der Datei Net FTP pm liegt Daruber hinaus ist ein Perl Modul mit Namensraum als Klasse zu verwenden falls objektorientierte Programmierung angewandt wird in Perl sind Namensraume aquivalent mit Klassen mussen jedoch nicht als solche verwendet werden Eine Sammlung von Modulen mit zugehoriger Dokumentation Build Skripten etc bilden eine Distribution Die Perl Community pflegt eine grosse Sammlung an Paketen etc auf CPAN Perl als Programmiersprache erlaubt vielfaltige Programmierstile Man kann sowohl ein Modul finden das prozedural herkommlich ahnlich wie C geschrieben ist z B Test Simple als auch Module mit objektorientierten Schnittstellen z B XML Parser und sowohl das eine als auch das andere konnen ihre Aufgaben effizient erfullen da es u a auf den Kontext ankommt In Verbindung mit XML ist eine objektorientierte Modulschnittstelle sehr viel sinnvoller als z B bei einer mathematischen Funktionsbibliothek Module konnen auch als Mixin Methoden genutzt werden oder ein Pragma sein z B strict was dann einen unmittelbaren Effekt auf das Programm hat Ausserdem konnen Module genutzt werden um die Syntax der Sprache selbst zu andern Module haben meist nur einen Effekt auf den Sichtbarkeitsbereich in dem sie geladen wurden meist eine Datei Perl Modulen ist es gemein eingebettete Dokumentation als Plain Old Documentation zu besitzen POD ist flexibel genug Artikel Webseiten oder gar Bucher zu schreiben z B Programming Perl im Gegensatz zu javadoc das auf die Dokumentation von Klassen spezialisiert ist Normalerweise folgen die Dokumentationen der Struktur einer manpage Der Code auf dieser Seite basiert auf Perl 5 10 0 und sollte somit auch mit Perl gt 5 10 0 ausgefuhrt werden konnen Mit beispielsweise Perl 5 6 konnen insbesondere die Namensraumbeispiele nicht ausgefuhrt werden Es wird Ausnahmen sind gekennzeichnet das Benutzen des Pragmas strict vorausgesetzt was saubereren Code zur Folge hat Inhaltsverzeichnis 1 Beispiele 1 1 Prozeduraler Ansatz 1 2 Objektorientierter Ansatz 2 Namensraume und Geltungsbereiche 3 Siehe auch 4 WeblinksBeispiele BearbeitenEine Hello World Funktion kann auf verschiedene Weise mit Modulen realisiert werden wobei es nicht zwingend ist die Funktion in ein Modul In Perl eher Namensraum package zu packen im Gegensatz zu Java vielmehr kann eine Funktion uberall definiert und genutzt werden in Modulen ebenfalls uber Einbindung mit use Trotzdem ist es aus Grunden der Ubersichtlichkeit ublich die Elemente eines Perl Moduls in einen Namensraum package zu stecken Eine Hello World Funktion sahe so aus package module1 sub hello print Hello World n Prozeduraler Ansatz Bearbeiten In hello pm wird die Funktion hello definiert und implementiert die im Hauptscript main pl ausgefuhrt wird main pl usr bin perl w use strict Pragma strict wird genutzt sodass eine besonders strenge Prufung durchgefuhrt wird use world hello hello pm world hello pm wobei die Basis Verzeichnisse also die Verzeichnis in denen world liegen konnte in einer Pfadvariable namens INC angegeben sind die auch das aktuelle Verzeichnis enthalt entweder hello hallo oder hello gt hallo Erde hello pm package hello Zeilen mit einem kennzeichnen integrierte PO Dokumentation Ein POD Abschnitt endet mit cut und kann an beliebiger Stelle stehen head1 NAME Hello World DIE Hello World Implementierung head1 ZUSAMMENFASSUNG use Hello World hallo hallo Erde head2 Funktionen Folgende Funktionen stehen zur Verfugung head3 hallo hallo hallo etw anderes head1 Autor Otto Normalhacker lt otto normalo de gt cut sub hallo my etw anderes shift defined etw anderes print Hello etw anderes n print Hello world n return 1 Jedes Perl Modul muss einen wahren Wert an den Compiler liefern sonst gibt es einen Error Objektorientierter Ansatz Bearbeiten Objektorientierte Losungen erfordern in allen Sprachen mehr Code und besitzen eine geringere Effizienz in der Ausfuhrung Wahrend der Entwicklung ist die Objektorientierung allerdings oft effizienter als eine prozedurale Losung In Perl ist die Objektorientierung durch Referenzen Skalare mit einer Speicheradresse auf Code und einen Hash realisiert main pl usr bin perl w use strict use Hello World Modul liegt in Hello World pm my hello new Hello World Objekt erzeugen hello gt gib begr aus Hello world ausgeben hello hello gt aendere ding galaxis Zu begrussendes Objekt in Galaxis andern und das geanderte Objekt zuruckspeichern my begr hello gt begr in string Begrussung speichern print begr und ausgeben World pm package Hello World Im objektorientierten Ansatz muss der Namensraum definiert sein da in Perl jede Klasse ein Namensraum ist use strict use warnings Eventuelle POD Inhalte sub new Prototyp des Konstruktors my class shift if exists 0 Falls nicht anders angegeben begrusse world my ding 0 else my ding world my self ding gt ding Hash Referenz mit Daten wird erzeugt bless self class mit dem Klassennamen abgesegnet return self und zuruckgegeben sub aendere ding Das Ding andern das begrusst wird my self shift Objekt annehmen my ding shift self gt ding ding Daten manipulieren return self geandertes Objekt zuruckgeben sub gib begr aus Die erzeugte Begrussung auf STDOUT ausgeben my self shift Objekt wird wieder angenommen print Hello self gt ding n und ausgegeben sub begr in string Die erzeugte Begrussung als String zuruckgeben z B bei Verwendung mit print my self shift return Hello self gt ding n Namensraume und Geltungsbereiche BearbeitenEin Perl Programm hat zur Laufzeit sofern nicht anders deklariert den Namensraum main eine Funktion func1 kann sowohl als func1 als auch als main func1 gerufen werden der Wert von var kann sowohl uber var als auch mit main var herausgefunden werden Es konnen jederzeit neue Namensraume deklariert und genutzt werden Variablen die mit my deklariert wurden verfugen uber keine Namensraumzugehorigkeit und existieren global jedoch nur innerhalb einer Datei Variablen die mit our deklariert werden verfugen uber eine Namensraumzugehorigkeit und existieren vollig global also auch uber Dateigrenzen hinweg wobei sie allerdings in einer anderen Datei als der mit der Deklaration also der einbindenden Datei mit Scope Resolution Operator und dem Namensraum gerufen werden mussen In ein und derselben Datei muss eine our Variable aus fremdem Namensraum nur dann vollqualifiziert mit und Namensraum gerufen werden falls im aufrufenden Namensraum bereits eine our oder my Variable desselben Namens existiert package namensraum1 my var foo mit my deklarierte Variablen liegen in keinem Namensraum Ein Rufen mittels namensraum1 var hat keinen Erfolg mit var jedoch uberall our var2 bar our deklariert eine an den Namensraum gebundene Variable our ist nur notig mit strict namensraum2 var3 42 Namensraum existiert noch nicht wird dabei aber gleich erstellt nur falls strict nicht genutzt wird our namensraum2 var4 21 Mit und ohne strict Fehler my namensraum2 var5 23 11 Fehler da my nicht namensraumgebunden ist sub namensraum2 hello w print Hello World n Geht sowohl mit als auch ohne strictSiehe auch BearbeitenJava Archive Objektorientierte Programmierung PerlWeblinks Bearbeitencpan org Abgerufen von https de wikipedia org w index php title Perl Modul amp oldid 210778385