Ein Wenig Perl. Manuskript Ein wenig Perl



Ähnliche Dokumente
5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

E-PRIME TUTORIUM Die Programmiersprache BASIC

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Objektorientierte Programmierung

Zwischenablage (Bilder, Texte,...)

Professionelle Seminare im Bereich MS-Office

5. Tutorium zu Programmieren

Einführung in die Programmierung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Visual Basic Express erstes Projekt anlegen

Einführung in die Programmierung

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

4. BEZIEHUNGEN ZWISCHEN TABELLEN

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Datenbanken Kapitel 2

GEONET Anleitung für Web-Autoren

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

AutoTexte und AutoKorrektur unter Outlook verwenden

Anleitung über den Umgang mit Schildern

Einführung in die Java- Programmierung

Informationen zur Verwendung von Visual Studio und cmake

Erwin Grüner

Programmierung in C. Grundlagen. Stefan Kallerhoff

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

AutoCAD Dienstprogramm zur Lizenzübertragung

.NET Code schützen. Projekt.NET. Version 1.0

Gruppenrichtlinien und Softwareverteilung

VisualBasic - Variablen

Terminabgleich mit Mobiltelefonen

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

I.1 Die Parrot Assemblersprache

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Informationsblatt Induktionsbeweis

Erstellen eigener HTML Seiten auf ewon

Modellierung und Programmierung 1

GITS Steckbriefe Tutorial

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

4 Aufzählungen und Listen erstellen

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Jederzeit Ordnung halten

Insiderwissen Hintergrund

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Internationales Altkatholisches Laienforum

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Anleitung zur Verwendung der VVW-Word-Vorlagen

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Anwendertreffen 20./21. Juni

Einleitung. Hauptteil. Wir befinden uns nun im Demoarchiv.

Versetzungsgefahr als ultimative Chance. ein vortrag für versetzungsgefährdete

Projektmanagement in der Spieleentwicklung

Import und Export von Übergängern

OP-LOG

! " # $ " % & Nicki Wruck worldwidewruck

CodeSaver. Vorwort. Seite 1 von 6

SMS/ MMS Multimedia Center

1 topologisches Sortieren

Anleitung Postfachsystem Inhalt

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Nutzung von GiS BasePac 8 im Netzwerk

Java Kurs für Anfänger Einheit 5 Methoden

Bedienungsanleitung für BackupMotion

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Zählen von Objekten einer bestimmten Klasse

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

E Mail Versand mit der Schild NRW Formularverwaltung

WinVetpro im Betriebsmodus Laptop

Erstellen von x-y-diagrammen in OpenOffice.calc

Arbeiten mit UMLed und Delphi

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Entwurf von Algorithmen - Kontrollstrukturen

Installation und Inbetriebnahme von Microsoft Visual C Express

Kennen, können, beherrschen lernen was gebraucht wird

IT-Basics 2. DI Gerhard Fließ

Bauteilattribute als Sachdaten anzeigen

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

BILDER TEILEN MIT DROPBOX

Doku zur Gebäudebrüter Datenbank

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Das Leitbild vom Verein WIR

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

ecaros2 - Accountmanager

Reporting Services und SharePoint 2010 Teil 1

Drucken aus der Anwendung

Aufklappelemente anlegen

Leichte-Sprache-Bilder

Menü auf zwei Module verteilt (Joomla 3.4.0)

1 Vom Problem zum Programm

Transkript:

Manuskript Ein wenig Perl Dieses Manuskript gibt einen kurzen Überblick über die Skript - Sprache Perl. Es ist im Rahmen eines Seminars zum Thema Programmiersprachen im Sommersemester 2004 an der Universität Kassel entstanden. Seminarleiter: Prof. Claudia Leopold Michael Süß Verfasser: Markus Kessler Seite 1 von 14

1. Vorwort... 3 2. Was ist ein Skript-Sprache... 3 3. Was ist Perl... 3 4. Der Perl Interpreter... 4 4.1. Arbeitsweise des Perlinterpreters... 4 4.2. Tippfehler, Debugging und Profiler... 4 4.2.1. Tippfehler erkennen:... 4 4.2.2. Debuggen des Quellcode:... 5 4.2.3. Profiler... 5 5. Das ist Perl... 5 5.1. Variablen... 5 5.1.1. Skalare... 5 5.1.2. Arrays... 6 5.1.3. Hash... 6 5.1.4. Reference... 6 5.1.5. Environment Variablen... 7 5.2. Kontrollstrukturen... 7 5.3. Ein-/Ausgaben... 8 5.4. Reguläre Ausdrücke... 8 5.5. Funktionen... 9 5.5.1. Beispiel 1:... 9 5.5.2. Beispiel 2:... 9 5.6. Daten Ein-/Ausgabe... 10 6. Module und Packages... 10 6.1. Packages:... 10 6.2. Module... 11 7. Objektorientiertes Programmieren... 12 8. Prägnante Punkte... 12 8.1. Verständlichkeit:... 12 8.2. Verfügbarkeit... 12 8.3. Portabilität:... 12 8.4. Effizienz... 12 8.5. Zuverlässigkeit... 12 8.6. Wartbarkeit... 13 8.7. Support... 13 9. Einsatzgebiete von Perl... 13 10. Schlusswort... 13 11. Literaturverzeichnis, Internetadressen... 14 11.1. Literaturverzeichnis... 14 11.2. Internetadressen... 14 Seite 2 von 14

1. Vorwort Dieses Manuskript ist im Rahmen des Seminars Programmiersprachen an der Universität Kassel im Sommersemester 2004 entstanden. Es soll nur einen sehr kurzen Einblick in die mächtige Programmiersprache Perl geben. Es soll in diesem Zusammenhang kein Anspruch auf Vollständigkeit erhoben werden. 2. Was ist ein Skript-Sprache Im allgemeinen spricht man von einfachen Textdateien die Programmcode enthalten und durch einen Interpreter ausgeführt werden können von einem Skript bzw. einer Skriptsprachen. Wir können drei Arten von Skript-Sprachen unterscheiden: 1.) Skriptsprachen die auf Kommandointerpreterebene eines Betriebsystems ausgeführt werden und im Prinzip eine Möglichkeit bieten die vom Betriebsystem zur Verfügung gestellten Funktionen automatisch im Batch-Betrieb ablaufen zu lassen. 2.) Skriptsprachen die es ermöglichen eine Anwendung zu steuern. Ein gutes Beispiel ist die von den Microsoft Office zur Verfügung gestellte Skriptsprache VBA (Visual Basic for Application) die es ermöglicht zusätzliche Funktionalitäten in den Komponenten zu programmieren. 3.) Skriptsprachen die als vollständige Programmiersprache zu sehen sind und im Unterschied zu diesen nur Interpretiert und nicht kompiliert werden. 3. Was ist Perl Larry Wall war Systemprogrammierer und Unix-Guru und benötigte für die Wartung mehrer Rechner die in einem Netwerk mit langsamer Modem Verbindung verbunden waren. Er beschloss, ein modifiziertes News - System zu nutzen. Doch er sah bald ein, das dieses nicht der richtige Weg war, das Problem zufriedenstellend zu lösen. Er begann in den 80er Jahren Perl (practical extraction and report language) zu entwickeln. Die Heutige nun 5 Version hat sich zu einem Allzweckhilfmittel entwickelt. Perl ist in vielen Bereichen, u.a da wo es um die Bearbeitung und formatierte Ausgabe von geht, beheimatet. Die Syntax von Perl ist stark an der von C angelehnt. Um ähnliche Such- und Ersetzvorgänge in anderen Sprachen wie C/C++ oder gar Java zu schreiben, bedarf es besonders im letzteren Fall eines Vielfachen an Aufwand. Das ursprüngliche Perl-Betriebssystem ist Unix. Daher erinnert die Perl-Skript auch an ein Shell-Skripte. Seite 3 von 14

4. Der Perl Interpreter 4.1. Arbeitsweise des Perlinterpreters Dateien, die Perl- Anweisungen, also das Perl- Skript enthält 1. Übersetzung der Anweisungen in Zwischencode. 2. Ausführung des erzeugten Zwischencode Ausgabe des Perl Programms Abbildung 1 Nach dem Start des Skriptes durch den Perlinterpreter wird diese komplett eingelesen und in einen Zwischencode portiert. Wenn dieses geschehen ist wird der Zwischencode ausgeführt. Der Zwischencode ist eingeführt worden um die Verarbeitungsgeschwindigkeit des Skriptes durch die Zielmaschine zu erhöhen. 4.2. Tippfehler, Debugging und Profiler Da Perl dem Anwender in der Gestaltung seines Programmcodes große Freiheit lässt, ist diese aber auch eine Quelle für Fehler. Ein Mittel um Fehler zu erkennen und Optimierungen durchzuführen ist das Debugging und Profilen des Programms. 4.2.1. Tippfehler erkennen: #! /usr/bin/perl w - weiterer Code - Mit der Option w im Interpreter Aufrufes in der ersten Zeile eines Perl-Skriptes, veranlasste man den Interpreter mitzuteilen das nur einmalig im Quellcode vorkommende Variablennamen angezeigt werden um ev. Tippfehler aufzudecken. Seite 4 von 14

4.2.2. Debuggen des Quellcode: #! /usr/bin/perl d - weiterer Code - Mit der Option d im Interpreteraufrufes in der ersten Zeile eines Perl-Skriptes veranlasste man den Interpreter in den Debuggermodus 1 zu gehen und das Skript Zeile für Zeile auszuführen. 4.2.3. Profiler Ein Profiler 2 sammelt Informationen über die zeitlichen Abläufe in Programmen und ist damit ein Hilfsmittel zur Optimierungen von Programmabläufen. Der Standart Debugger bittet eine solche Funktion in Perl nicht. Doch man kann das Modul DProf bei CPAN Herunterladen und es nach Installation beim Aufruf von Perl einlinken. z.b. perl d:dprof test.pl 5. Das ist Perl 5.1. Variablen Perl ist eine nicht typisierte Programmiersprache, das heißt das es nicht nötig ist die Variable erst zu Deklarieren,d.h. den Type der Variable festzulegen. Dieses geschieht in Perl bei der Definition, also bei der Zuweisung eines Wertes (Integer, String, Flout, ). Daraus ergibt sich, das eine Variable im Verlauf des Programms seinen Typen beliebig ändern kann, was es so in typisierten Sprachen wie z.b. C/C++ und Java nicht gibt. Die Interpretation des Typen erfolgt Aufgrund des entsprechen Kontextes 3 in dem die Variable verwendet wird. Man unterscheidet in Perl folgende Datentyen: Beispiel: 5.1.1. Skalare $Name = Methusalem ; $Alter = 625; $Name_2 = Junger Hansel ; $JungAlter = sqrt($alter); Bemerkung: Skalare Variablen werden mit ein vorangestehenden $ - Zeichen gekennzeichnet. Sie haben keinen festen Typ und werden erst nach Zuweisung mit dem = -Zeichen Typisiert. Sie können Zahlen sowie Zeichenketten aufnehmen. Die Größe des Defaultwertes einer Variable ist im Prinzip nur durch den auf der Zielmaschine zur Verfügung stehenden Speicherplatz begrenzt. 1 Weiter Infos siehe [Krienke] im entsprechen Kapitel 2 Siehe [Sioever] und 3 Weiter Infos siehe [Krienke] im entsprechen Kapitel Seite 5 von 14

Beispiel: 5.1.2. Arrays @Daten = ( Jana,23, Berlin, Abitur ); print $Daten[0] ist $Daten[1] Jahre alt, wohnt in $Daten[2] und hat $Daten[3]\n ; Bemerkung: Arrays werden mit dem Voranstehenden @ - Zeichen gekennzeichnet. Sie können mit einer Liste Initialisiert. Auf die einzelnen Elemente es Arrays wird mit dem Konstrukt $Array-Name[ Index] zugegriffen. Man beachte das vorangestelten $ - Zeichen! Mehr dimensionale Arrays werden mit den entsprechenden Konstrukten @Array-Name[Index1][Index2] und $Array-Name[Index1][Index2] erschlossen. Der Unterschied zu den Arrays in anderen Programmiersprachen ist, das er nicht statisch sind, d.h. sie können eine beliebige Länge haben. Die Elemente des Array sind Skalare. Ergänzend seien noch die Möglichkeit erwähnt mit Hilfe von Funktionen Push, Pop u.a. einen Stack Mechanismus zu realisieren. Weiteres zu diesem Thema kann aus den in der Literaturangabe verwiesen Büchern entnommen werden. Beispiel: 5.1.3. Hash %Daten = (Name => Jana, Alter => 23, Ort => Berlin, Bildung => Abitur ); print $Daten{ Name } ist $Daten{ Alter } Jahre alt, wohnt in $Daten{ Ort } und hat $Daten{ Bildung }\n ; Bemerkung: Hash werden mit dem Voranstehenden % - Zeichen gekennzeichnet. Sie werden mit einer Schlüssel Attribut Liste Initialisiert. Die Trennung von Schlüssel und Attribut geschieht innerhalb der Initialisierungsliste mit dem => oder ; - Zeichen. Der Zugriff auf Elemente des Hash geschieht mit Hilfe des $Hash-Name(Schlüssel-Name) Konstruktes. Beispiel: 5.1.4. Reference $Satz = HTML How To Make Love ; $Satzzeiger = \$Satz; print Variablentyp und Speicheradresse von \$Satz: $Satzzeiger<br>\n ; print Inhalt von \$Satz: ${$Satzzeiger}\n ; Bemerkung: Im obiger Beispiel sie man das wir eine Referenz durch das \ - Zeichen definieren. Hier eine Referenz von $Satzzeiger auf den $Satz. Man kann mit Referenzen auf andere Datentypen verweisen und somit Datenstrukturen aufbauen. Seite 6 von 14

Wir werden hier nicht weiter in die Tiefe gehen und daher verweise ich auf die im Anhang verwiesene Literaturquellen um den Stoff zu vertiefen 4. 5.1.5. Environment Variablen Eine Sonderrolle nehmen sie Enviroment Variablen ein. Für sie ist ein Systemdefiniertes Hash namens %Env im System angelegt. Dieses Hash enthält u.a solche Dinge wie Versionsnummern, Arbeitverzeichnisse. Man kann auf die einzelnen Variablen über deren Schlüssel Attribut zugreifen oder ändern sowie neue Variablen hinzufügen. Ich möchte in diesem Zusammenhang auf das entsprechende Kapitel in Selfhtml 5 verweisen. 5.2. Kontrollstrukturen Da die Kontrollstrukturen stark denen der in C/C++ gebräuchlichen gleichen, will ich hier nur einen Kurzen Überblick geben. Was vielleicht besonders zu erwähnen ist, ist der Konstrukt Foreach. Mit ihm ist es ein leichtes in wenigen Kodezeilen einen Abfrage auf ein komplettes Array zu erzeugen ohne langwierig über andere Schleifenmechanismen eine Abfrage zu realisieren. Anweisung if (Bedingung); Anweisung unless (Bedingung); If (Bedingung1) {Anweisundg1} [elseif (Bedingung2){ Anweisung2} elseif (Bedingung2){ }] [else{anweisungen) }] Switch : { If (Bedingung1){Anweisung1} If (Bedingung2){Anweisung2} } While (Bedingung) {Anweisengen} Until (Bedingung){Anweisungen} Die Anweisung wird bei Bedingung=TRUE ausgeführt Diese Struktur verhält sich spiegelbildlich zu der obigen. Die Fallunterscheidung von Switch kann mit if-then-else oder den && - Operatoren realiesiert werden Die Anweisungen werden solange ausgeführt bis die Bedingung=FALSE ist. Verhält sich spiegelbildlich zu der obigen. Do {Anweisungen} until (Bedingung) For(Initialisierung; Bedingung; Abschluss){Anweisungen} Foreach Variable (Liste) {Anweisungen} Die Schleife ist eine spezielle auf Listen Verarbeitung zugeschnittene. Die Variable wird automatisch der reihen nach den Elementen der Liste zugewiesen und kann dann im Anweisungsblock verarbeitet werden. 4 siehe Internetlinks [self8] u.a. 5 Siehe Internetlinks [self8] Seite 7 von 14

5.3. Ein-/Ausgaben Beispiel: $input=<stdin> In dieser Zeile wird auf die Eingabe in der Standart Eingabe gewartet print Dieser Text erscheint auf STDOUT\n ; print STDOUT Dieser Text erscheint auf STDOUT\n ; print STDERR Dieser Text erscheint auf STDERR\n ; warn Diese Ausgabe von warn erscheint auf STDERR\n ; die Programmabbruch; erscheint auf STDERR\n ; Bemerkung: Mit Hilfe der Standart Ein-/Ausgaben (STDIN, STDOUT und STDERR) kann man eine Benutzer Interaktion realisieren sowie bestimmte Informationen auf Dateien umlenken. Ergänzend sei hier noch die Möglichkeit der Formuarerzeugung 6 in Perl erwähnt. Die es ermöglicht auf einfache Art und Weise eine formatierte Ausgabe zu erzeugen. 5.4. Reguläre Ausdrücke Wir wollen hier nur sehr kurz auf das Thema reguläre Ausdrücke und deren Anwendungen eingehen. Dieses Thema ist eines der großen Stärken der Programmiersprache Perl. In anderen Programmiersprachen (z.b. C/C++) würde solche Probleme ein erheblichen Programmieraufwand bedeuten! Mit Hilfe von regulären Ausdrücken kann man Suchmuster erzeugen die es ermöglichen bestimmte Vorkommen in Zeichenketten zu erfragen, Zeichenketten stellenweise ersetzen oder das Vorkommen einzelner Zeichen zählen. Perl bietet drei verschiedene Operatoren, die mit Hilfe von regulären Ausdrücken Zeichenketten manipulieren können. 1.) Suchen eines Musters: $satz =~ m/muster/optionen 2.) Suchen und Ersetzen eines Musters: $satz =~ s/suchmuster/ersetzmuster/optionen 3.) Zählen oder Ersetzen einzelner Zeichen: $satz =~ tr/suchliste/ersetzliste/optionen $satz =~ y/suchliste/ersetzliste/optionen Die Muster (MUSTER, SUCHMUSTER, ERSETZMUSTER, SUCHLISTE, ERSETZLISTE) können durch reguläre Ausdrücke gebildet werden die, die zu bearbeitenden Zeichenketten definieren bzw. ersetzen. Eine genauer Steuerung wir durch die Optionen 7 realisiert. Ein kleines Beispiel soll die Mächtigkeit der regulären Ausdrücke und der damit verbundenen Funktionen zeigen: 6 Weiter Infos siehe [Krienke] im entsprechen Kapitel 7 Siehe [self8] unter den Internetlinks im entsprechendem Kapitel Seite 8 von 14

$satz = Dies ist ein Satzz mitt Fehlerrrn. ; print Original:\n$satz\n ; If($satz =~ m/ist/i) { print Der Satz enthält: \ ist\ \n ; } $satz =~ tr/a-za-z//s; print Keine doppelten Buchstaben:\n$satz\n ; $satz =~ s/ist/war/i; print Veränderter Satz:\n$satz\n ; # Definition des Strings satz # Ausgabe des Strings satz # Suche des Musters ist ohne casesensentitive: # doppelte Zeichen löschen # ist in war ändern 5.5. Funktionen 5.5.1. Beispiel 1: 5.5.2. Beispiel 2: #!/usr/bin/perl $global = global ; &funk1; print global: $global ; print local1:$local1 local2:$local2 ; print my1:$my1 my2:$my2\n ; sub funk1 { my $my1 = 1; local $local1 = 1; print funk1 : $global ; print local1:$local1 my1:$my1\n ; &funk2; } sub funk2 { my $my2 = 2; local $local2 = 2; print funk2 : $global ; print local1:$local1 local2:$local2 ; print my1:$my1 my2:$my2\n ; } $zahl1 = 10; $zahl2 = 5; $zahl3 = &mult1; $zahl4 = &mult2($zahl1, $zahl2); print $zahl3 $zahl4 ; sub mult1 { return $zahl1 * $zahl2; } sub mult2 { return $_[0] * $_[1]; # Zugriff auf den 1. und 2. } Parameter von mult2 Bemerkung: sub Funktion-Name {Anweisungsblock} -> Funktionsdefiniert &Funktions-Name(Parameterlist) -> Funktionsaufruf $_[Index] Parameter: -> Zugriff auf die durch die Funktion übergebener Parameter Sichtbarkeit von Variablen (siehe Beispiel 1.) Global-Variablen: Sind im gesamten Quellcode Sichtbar Local-Variablen: Sind in der entsprechenden und allen Unterfunktionen Sichtbar My- Variablen: Sind nur in der Funktion selber, aber nicht in Unterfunktionen sichtbar Standartmässig werden die Parameter Call by Value (Kopien der Variablen werden übergeben) übergeben. Durch ein voranstellen des /-Zeichens bei den Parametervariablen wird eine Übergabe Call by Referenance (es wird eine Referenz auf die Variablen übergeben) durchgeführt, wodurch die Parameter nach der Ausführung einer Funktion geändert sein können. Die übergeben Parameter werden Standartmässig in ein Array(namens $_) übergeben auf welches im Verlauf der Abarbeitung der Funktionen zugegriffen($_[0] erster Wert) werden Seite 9 von 14

kann. Die letzte verarbeitet Variable oder der befehl exit plus Parameter entscheidet über den Rückgabewert der Funktionen. 5.6. Daten Ein-/Ausgabe Eine weitere Stärke von Perl ist der Umgang mit Dateien. Man kann auf verblüffend einfache Art und Weise Daten von Dateien Ein -/ und Auslesen. Beispiel : # Einlesen der Datei bsp1.pl in @array open(datei, </perltest/bsp1.pl ) die Fehler beim Lesen ; # die gibt bei nichterfolg eine Meldung aus @array=<datei>; # Kopieren einer ganzen Datei in ein Array close(datei); # zweimal in verschiedene Dateien schreiben for(1..2) { open(datei1, >/perltest/einfach.txt ) die Fehler bei > ; open(datei2, >>/perltest/doppelt.txt ) die Fehler bei >> ; # Schreiben in beide Dateien foreach(@array) { print DATEI1 $_ ; print DATEI2 $_ ; } close(datei1); Bemerkung: Im obigen Beispiel werden Dateien über Datei Handler 8 verfügbar gemacht.die Ein- /Ausgaberichtung wird ähnlich der Dateiumlenkung in Unix erreicht mit den <,>,>> - Zeichen (siehe Zusatz und Beispiel). Über den Dateihandler, wie man oben sieht, kann man den kompletten Dateiinhalt in ein Array kopieren. Dadurch kann man eine starke Vereinfachung der weiteren Bearbeitung der Daten aus einer Datei erreichen. Weiteres in diesem Zusammenhang entnehmen wir den Büchern im Literaturverzeichnis. Zusatz : Zugriff Zeichen lesend > schreibend < anfügenschreiben >> 6. Module und Packages 6.1. Packages: Wie wir das aus den Funktionen her kennen, gelten die Variablen die wir mit my deklariert wurden nur im Gültigkeitsbereich der definierenden Funktion und sind außerhalb dieser nicht mehr sichtbar. 8 Siehe [self8] in entsprechenden Kapitel Seite 10 von 14

Das gleiche Prinzip sehen wir am unteren Beispiel. Hier grenzen wir den Gültigkeitsbereich der Variablen durch die Package Anweisung ab, um einen Konflikt der Variablen bzw. Funktionsnamen zu verhindern. Ausnahmen sind spezielle Variablen wie $_ oder @ARGV. Das Standartpackage ist main und wir ohne zutun des Users angelegt. Beispiel aus dem Internet : #!/usr/local/bin/perl w $v = 123; print $v. \n ; # (1) ### Ab hier gilt ein neuer Namensraum. Package p; print $v. \n ; # (2) print $main::v. \n ; # (3) print $::v. \n ; # (4) $w = 456; print $w. \n ; # (5) print $p::w. \n ; # (6) ### Hier kehren wir wieder zu main zurück. Package main; print $v. \n ; # (7) print $w. \n ; # (8) print $p::w. \n ; # (9) (1) Gibt wie gewohnt den Inhalt von $v aus ( 123 ). (2) Dies führt zu einer Fehlermeldung, da $v in main angelegt wurde, und daher im Package p nicht bekannt ist. (3) So kann über den Package-Namen auch in p auf $v zugegriffen werden. (4) Für main-variablen kann der explizite Package-Name auch weggelassen werden. (5) Gibt den Inhalt der Variablen $w aus (zum Package p gehörend!). (6) Wie (5), nur mit Package-Namen (7) Da hier wieder der Namensraum von main gilt, gibt es diesmal keine Fehlermeldung (vgl. (2)). (8) Da $w in p angelegt wurde, darf sie nicht ohne weiteres in main verwendet werden, d.h., hier erfolgt eine Fehlermeldung. (9) So kann in main auf Variablen eines anderen Packages zugegriffen werden. 6.2. Module Wir sprechen von einem Modul wenn wir ein Package in eine Datei ablegen, die wir üblicherweise mit dem use Befehl in einem weiteren Skript verfügbar machen. Ein kleines Beispiel soll das verdeutlichen: Datei : test.pm package test; # Definition des Modules test mit der Funktion test_mich sub test_mich { print Das ist ein Test!\n ; } 1; Datei : main.pl #!/usr/local/bin/perl w print Ich bin noch im main Package!\n ; use test; &test::test_mich(); # Hier ist man noch im main Package # Ab hier im test Package # Hier wird die Funktion test_mich des Packages test aufgerufen Seite 11 von 14

Weites zu diesem Thema entnehmen wir den in der Literaturangabe verwiesenen Quellen. 7. Objektorientiertes Programmieren Der Perl-Interpreter unterstützt objektorientiertes Programmieren seit der Version 5.0. Für weitere Informationen verweise ich auf das Literaturverzeichnis. 8. Prägnante Punkte 8.1. Verständlichkeit: Perl ist im Prinzip eine leicht zu erlernende Programmiersprache, vor allem wenn man Erfahrungen im Umgang mit C/C++ hat. 8.2. Verfügbarkeit Der Quellcode von Perl weltweit und Kostenlos (Public Domain GNU Lizenz) verfügbar. Dieses macht es einem jedem möglich sich an der Weiterentwicklung zu beteiligen um seine Ideen in die Tat umzusetzen. 8.3. Portabilität: Perl Interpreter sind auf allen gängigen Unix Varianten, Macintosh, OS/2, MS-DOS, Windows verfügbar. Daher ist eine Entwicklung auf unterschiedlichen Betriebsystemen ohne weiteres möglich, solange man keine Systemspezifischen Funktionalitäten in seinem Programmcode verwendet. 8.4. Effizienz Dadurch das Perl eine Interpretierte Programmiersprache ist, kann man von einer Kurzen Entwicklungszeit von Projekten ausgehen, da man nicht immer wiederkehrend Kompilieren und Linken muss, was unter Umständen ein langwierig Prozess sein kann. Das Debugging ist durch die Zeile für Zeile Verarbeitung einfacher, da man einem Fehler ev. Sofort erkennen kann. Eine Dynamische Code- Erzeugung ist in Perl auch möglich da man zur Laufzeit das Programm ändern und neu ausführen lassen kann. Abstriche muss man natürlich im Punkto Ausführungsgeschwindigkeit machen, da eine Interpretierter Code unter Umständen langsamer abläuft als ein Kompilierter in Maschinencode vorliegender. 8.5. Zuverlässigkeit Wir können bei Perl, auf eine Entwicklungszeit von nunmehr 24 Jahren zurückblicken. In dieser Zeit waren tausende von Entwicklern an der Bug-Beseitigung sowie Weiterentwicklung tätig. Die Zuverlässigkeit ist daher sehr hoch einzuschätzen. Seite 12 von 14

8.6. Wartbarkeit Der Programmcode kann schwer wartbaren sein, weil er z.t. schlecht strukturiert und kryptisch sein kann. 8.7. Support Der Support von Perl ist nur Informeller Natur (Newsgroups, Internet, u.a.) 9. Einsatzgebiete von Perl Perl ist in Ersten Linie ein Allzweck-Programmiersprache. Mit einer besonderen Stärke beim Einsatz wo es um die Verarbeitung und die Darstellung von Textdaten geht. Beispiele: CGI Programmierung: Bei CGI Programmierung geht es darum Daten aus verschieden Quellen zu holen, zu Verarbeiten und sie in Form von Dynamischen Webseiten Darzustellen. Systemverwaltung: Hier geht es zur Hauptaufgabe um die Verarbeitung von Konfigurationsdateien, zumeist in Form von naiven Textdateien. Anwendungsprogrammierung: Ein einfaches Anwendungsgebiet wäre hier die Umformatierung von einem Datenformat in ein anderes z.b. beim exportieren der Daten einer Altdatenbank und dem Importieren in eine Neudatenbank unter zu Hilfenahme von umformatierten Assci Dateien. u.a. 10. Schlusswort Da aufgrund des gewünschten Umfangs von ca. 10 Seiten eine ausführliche Darstellung der Perl Programmiermöglichkeiten nicht möglich ist, verweise ich auf die im Anhang verwiesenen Quellen. Wenn man das Wort Skript hört, denkt wir vielleicht, dass wir es hier nicht mit einer Vollständigen und Flexiblen Sache handeln kann. Aber Perl belehrt uns eines besseren. Ich muss doch zugeben dass Perl einiges zu bieten hat. Und Programmierer sich auch mal mit alten Programmiersprachen auseinander setzen sollten. Denn nicht immer das Neuste ist auch das Beste. Ich kann abschließend nur festhalten das ich meine das Perl zwar eine schon in die Jahre gekommene Programmiersprache ist, aber durch die Möglichkeiten die sie bietet das Interesse wecken sollte. Ich möchte hier noch erwähnen, das man sich mal die Tools die im Internet für die Entwicklung von Perl Skripten zur Verfügung stehen anzusehen sollte. Man mag es kaum klauben, aber es gibt von der Firma ActiveState sogar eine Microsoft Visual Studio.Net Plugin für Perl. Seite 13 von 14

11. Literaturverzeichnis, Internetadressen 11.1. Literaturverzeichnis [Krienke] Krienke, Rainer : Programmieren in Perl 2. erw. Aufl. München : Hanser, 2002 [Hajji] Hajji, Fahrid : Perl Einführung, Anwendung, Referenz 1. Auf. Bonn : Addison Wesley, 1998 [Petter] Petter, Ehrhardt : Perl-Anwendungen im Web 1. Auf. Berlin : VDE, 2002 [Schaaf] Schaaf, Dennis : Perl Das bhv Taschenbuch 1.Auf. Bonn : bhv, 2000 [Sioever] Ellen Sioever, Stephen Spainhour & Nathan Patwardhan 1.Auf. Nov 1999: O Reilly, 1999 11.2. Internetadressen [solsof] www.solutionsoft.com : Perl Builder [acst] www.activestate.com : Visual Perl für MS Visual Studio Net (Plugin) [sanso] www.sannysoft.com : Sanny Soft Perl Editor [self8] www.selfhtml.net : Selfhtml Version 8.0 [netlex] www.net-lexikon.de : Netlexikon zu vielen Themen der Computertechnik [perl] www.perl.org : Perl Hauptseite [cpan] www.cpan.org : CPAN und DProf u.a. Module Seite 14 von 14