VOICE Homepage: http://de.os2voice.org |
Oktober 2001
[Inhaltsverzeichnis]
|
Von Heiko Korsawe © Oktober 2001 |
Eine einfache Programmiersprache unter OS/2, mit der man schnell einfache aber auch komplizierte Aufgaben lösen kann, ist sicher für jeden OS/2-Anwender nützlich. Zum Beispiel der Privat-Nutzer, der einfach aus HTML-Dokumenten bestimmte Einträge entfernen will oder Links von Grafiken in HTML-Dokumenten ändern möchte, da er sie lokal gespeichert hat. Man hat vielleicht vor, sich eine Suchen/Ersetzen-Routine über mehrere Texte selbst zu programmieren oder möchte einfach sein OS/2 um eigene Funktionen erweitern. Aber auch zum Ausbau von Web-Seiten oder eines Web-Servers ist Perl nützlich. Ein großer Vorteil hierbei: Perl existiert für sehr viele Betriebssysteme (Linux, Unix, OS/2, DOS, Windows), somit lassen sich Programme und die erworbenen Kenntnisse auch auf anderen Plattformen einsetzen.
Dieser Beitrag soll Interessierten einen kleinen Einblick in die Perl-Programmierung geben und sie zu eigenen Versuchen anregen. Die Installationsanleitung und die Download- bzw. Bezugsquellenangaben sollen auch OS/2-Anfängern die Möglichkeit geben, mit Perl zu experimentieren und es vielleicht nutzbringend einzusetzen. Er ist für alle, die keine Lust haben, sich erst lange mit der Theorie vertraut zu machen, sondern gleich loslegen wollen.
Perl ist leichter zu erlernen als REXX (welches ja zum Lieferumfang von OS/2 gehört) oder C++ und es ist im Prinzip plattformunabhängig (Systemaufrufe sind natürlich immer plattformspezifisch). Mit Perl unter OS/2 entwickelte Programme können genau so unter Linux, Unix, Windows NT und DOS funktionieren. Man benötigt nur den entsprechenden Perl-Interpreter und die EMX-Runtime-Umgebung. Das alles ist frei im Internet verfügbar und kostenlos. Ich verwende EMX-Version 5 und Perl 5.004_55.
Perl eignet sich insbesondere für die Verarbeitung von Texten und ist somit auch ideal auf Web-Servern für CGI-Scripte einsetzbar, besonders wenn man bedenkt, dass man sich jederzeit für ein anderes Betriebssystem entscheiden kann, ohne die Funktionsfähigkeit des Web-Servers einzuschränken (das hängt natürlich doch etwas vom gewählten Betriebsystem ab, bei Linux z.B. gibt es keine Probleme).
Um zu zeigen, wie leicht es ist ein kleines Perl-Programm zu schreiben, hier ein erster Einstieg. Nie sollte man dabei vergessen ein solches Programm gut mit Kommentaren zu dokumentieren, da es sonst später sehr schwer möglich ist, das Programm zu verstehen.
Ein Perl-Programm kann mit einem einfachen Texteditor (z.B. dem OS/2-Systemeditor) geschrieben werden. Wichtig ist hierbei die 1. Zeile, welche mit einem Doppelkreuz # beginnt, die dem Perl-Interpreter sagt, dass es ich um ein Perl-Programm handelt und wo sich der Standard-Pfad für den Perl-Interpreter befindet. Sie lautet bei mir so:
#!/tools.os2/emx/bin/perlDanach folgt der Programmtext, Kommentare werden mit # für jede Zeile eingeleitet.
#!/tools.os2/emx/bin/perl #Ein einfaches Beispiel #zur Erläuterung des Arbeitens mit Perl #1. die Zuweisungen der Variablen #einfache Variable, beginnen immer mit $ #Zuweisung, die Variable $a soll den Wert 1 bekommen $a = 1; #fast jeder Perl-Befehl endet mit ; #außer Kommentare und Schleifenbefehle #Zuweisung, die Variable $b soll den Wert 3 bekommen $b = 3; #Nun die Ausgabe dieser Werte, eine Addition und die Ausgabe des Ergebnisses print "Variable 1: $a\n" print "Variable 2: $b\n" $c = $a + $b; print "Summe: $c\n" # \n ist jeweils ein Zeilenwechsel #Das war's.
Der Start des Programms erfolgt durch Aufruf des Perl-Interpreters und Übergabe
des Namens der Programm-Datei.
Im OS/2-Fenster sieht das nun so aus:
Da man ohne ein funktionierendes Perl auf seinem Computer dieses Beispiel hier nicht ausprobieren kann, möchte ich jetzt die Bezugsquellen und die Installation vorstellen.
Um Perl einzusetzen benötigt man die Software selbst (komplett etwa 7 MB ZIP-Dateien) und die EMX-Runtime-Library.
Diese sind unter
ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/emxrt.zip
ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu/script/cpan/latest
oder
http://hobbes.nmsu.edu/pub/os2/dev/emx/v0.9d/emxrt.zip
http://hobbes.nmsu.edu/cgi-bin/h-browse?sh=1&dir=//pub/os2/dev/perl
zu finden.
Sollte Perl in einzelnen ZIP-Archiven vorliegen, benötigt man folgende:
perl_aou.zip
perl_blb.zip
perl_exc.zip
perl_inf.zip
perl_mam.zip
perl_man.zip
perl_mlb.zip
perl_pod.zip
perl_sh.zip
perl_ste.zip
perl_utl.zip
plinstl0.zip
plinstal.zip
plreadme.zip
Das Entpackprogramm für die ZIP-Archive findet man auch hier
ftp://ftp.leo.org/pub/comp/os/os2/leo/archiver/unzip532.exe
Das Programm wird in ein Verzeichnis kopiert und dann durch Aufrufen entpackt.
Nachdem man sich die Software beschafft hat, kann es losgehen. Wichtig ist noch, dass man nicht vergißt sich ein Entpackprogramm (unzip) zu beschaffen.
Zuerst muß die EMX-Runtime installiert werden. Alte EMX-Bibliotheken dürfen nicht vorhanden sein! Es kann durchaus vorkommen, dass andere Software bereits einige EMX-DLLs usw. installiert hat. Um diese zu lokalisieren, gibt man den Befehl
dir c:\emx*.* /sin einem OS/2-Fenster ein und durchsucht evtl. noch weitere Laufwerke danach. Entscheidend sind folgende Dateien:
emx.dll
emxio.dll
emxlibc.dll
emxlibcm.dll
emxlibcs.dll
emxwrap.dll
emx.exe
emxbind.exe
emxfpemu
emxl.exe
emxload.exe
emxrev.cmd
emxstack.exe
emxupd.exe
Diese Dateien sollten sofern vorhanden umbenannt und später, wenn auch die
alte Software mit dem neuen EMX läuft, entfernt werden.
Als nächstes legt man das Verzeichnis für EMX fest, bei mir c:\Tools.os2\emx (Verzeichnis emx wird automatisch beim Entpacken angelegt). Danach wird die gepackte Datei, meist emxrt.zip o.ä., in dieses Verzeichnis (c:\Tools.os2) und das Entpackprogramm (unzip.exe, ich verwende UnZip 5.20 of 30 April 1996 für OS/2, aber es geht auch mit anderen, zur Not auch DOS-unzip) am besten unter c:\os2\apps kopiert. Jetzt EMX entpacken:
OS/2-Fenster aufrufen
cd c:\Tools.os2
unzip emxrt.zip
Erledigt!
Als letztes müssen in der CONFIG.SYS drei Zeilen ergänzt werden (besser vorher Sicherheitskopie anlegen - man weiß ja nie...):
LIBPATH= ... ;C:\TOOLS.OS2\EMX\DLL SET BOOKSHELF= ... ;C:\TOOLS.OS2\EMX\PERLLIB\BOOK SET PATH= ... ;C:\TOOLS.OS2\EMX\BIN
Danach ist ein OS/2 Neustart erforderlich. Die Funktion testet man durch Eingeben von
emxrevim OS/2-Fenster. Sie sollten folgende Ausgabe für EMX 0.9d fix 4 bekommen:
EMX : revision = 61 EMXIO : revision = 60 EMXLIBC : revision = 63 EMXLIBCM : revision = 64 EMXLIBCS : revision = 64 EMXWRAP : revision = 60
Tauchen andere Werte auf, so geistert sicher noch irgendwo eine alte DLL rum, die noch entfernt werden muß. Die Perl-Installation ist mittels Installationsprogramm (plinstal.zip und plinstl0.zip) recht einfach. Diese beiden Dateien müssen in das Verzeichnis entpackt werden, in welchem sich auch die anderen Perl-ZIP-Dateien befinden. Am besten unter c:\temp\pinst. Wechseln Sie dazu in dieses Verzeichnis und geben folgendes ein:
unzip plinstal.zip unzip plinstl0.zipSiehe auch oben. Nun startet man mit
install
das Installationsprogramm und hat anschließend die Möglichkeit den Umfang der Installation zu bestimmen. Im Zweifelsfall installiert man alles. Wichtig ist das richtige Setzen der Installationsverzeichnisse.
Die unter PERLLIB liegenden Verzeichnisse werden einfach übernommen.
Die Struktur sieht nach der Installation bei mir wie folgt aus:
Fehlt das komplette Installationsprogramm, so muß man die Installation manuell vornehmen. Hilfe bietet hierbei die Datei README.os2 (plinstl0.zip und plreadme.zip entpacken).
Zusammengefaßt:
unzip perl_exc.zip *.exe *.ico -d c:\tools.os2\emx\bin unzip perl_exc.zip *.dll -d c:\tools.os2\emx\dll
unzip perl_aou.zip -d c:\tools.os2\emx\bin
unzip perl_utl.zip -d c:\tools.os2\emx\bin
mkdir c:\tools.os2\emx\perllib
unzip perl_mlb.zip -d c:\tools.os2\emx\perllib\lib
unzip perl_ste.zip -d c:\tools.os2\emx\perllib\lib\site_perl
unzip perl_blb.zip -d c:\tools.os2\emx\perllib\lib
unzip perl_man.zip -d c:\tools.os2\emx\perllib\man
unzip perl_mam.zip -d c:\tools.os2\emx\perllib\man
unzip perl_pod.zip -d c:\tools.os2\emx\perllib\lib
Wichtig! Verzeichnis c:\tools.os2\emx\book unbedingt vorher anlegen.
mkdir c:\tools.os2\emx\book
unzip perl_inf.zip -d c:\tools.os2\book
unzip perl_sh.zip -d c:\tools.os2\emx\bin
Aus diesen Befehlen kann man auch eine Datei erstellen, Name z.B. inst.cmd und mit dieser läuft dann alles automatisch ab. Als letztes muß noch die CONFIG.SYS angepaßt werden. Folgende SET-Befehle sind hinzuzufügen:
set PERL_BADLANG=0 set PERLLIB_PREFIX=C:\TOOLS.OS2\EMX\PERLLIB\LIB set PERL_SH_DIR=C:\TOOLS.OS2\EMX\BIN set MANPATH=C:\TOOLS.OS2\EMX\PERLLIB\MAN set PERL_BADLANG=0 set PERLLIB_PREFIX=f:/perllib/lib;C:/Tools.OS2/emx/PERLLIB/lib set PERL_SH_DIR=C:\Tools.OS2\emx\BINDer Pfad-Eintrag f:/perllib/lib muß aus Kompatibilitätsgründen vorhanden sein, er existiert nicht wirklich. Starten Sie das System neu. Nun sollte Perl laufen. Test mit
perl -vund
testperlDas Testprogramm muß ohne Fehlermeldungen durchlaufen. Folgendes wird angezeigt, wenn alles OK ist:
[C:\]testperl Status für ECHO ist OFF. Testing perl... Getting version... Status für ECHO ist OFF. This is perl, version 5.004_55 built for os2 Copyright 1987-1997, Larry Wall OS/2 port Copyright (c) 1990, 1991, Raymond Chen, Kai Uwe Rommel Version 5 port Copyright (c) 1994-1997, Andreas Kaiser, Ilya Zakharevich Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit. ==================================== We checked that Perl can be loaded. Apparently, your PATH and LIBPATH are set to reasonable values. From now on the tests are coded in Perl. Press <ENTER>: ==================================== The next step is to check that you installed shell in a location perl can find, so that you can start external programs. I could find your shell, its version is '@(#)PD KSH v5.2.7 96/06/04' Press <ENTER>: ==================================== Ouph, the most frequent problem is behind... Now testing Perl library search. Found Perl library. Fine... Press <ENTER>: ==================================== The following entries in 'C:/Tools.OS2/emx/PERLLIB/lib/os2/5.00455/Config.pm' contain path settings which look suspicious: archlibexp => 'C:/Tools.OS2/emx/PERLLIB/LIB/os2/5.00455' installarchlib => 'C:/Tools.OS2/emx/PERLLIB/LIB/os2/5.00455' installprivlib => 'C:/Tools.OS2/emx/PERLLIB/LIB' installprivlib => 'C:/Tools.OS2/emx/PERLLIB/LIB' libpth => 'f:/emx.add/lib f:/emx/lib D:/DEVTOOLS/OPENGL/LIB f:/emx/lib/mt' privlibexp => 'C:/Tools.OS2/emx/PERLLIB/LIB' archlib => 'C:/Tools.OS2/emx/PERLLIB/LIB/os2/5.00455' bin => 'C:/Tools.OS2/emx/BIN' binexp => 'C:/Tools.OS2/emx/BIN' full_sed => 'F:/EMX.ADD/BIN/sed' installbin => 'C:/Tools.OS2/emx/BIN' installman1dir => 'C:/Tools.OS2/emx/PERLLIB/MAN/man1' installman3dir => 'C:/Tools.OS2/emx/PERLLIB/MAN/man3' installscript => 'C:/Tools.OS2/emx/BIN' installsitearch => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL/os2' installsitelib => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL' libc => 'f:/emx/lib/mt/c_import.lib' make => 'F:/EMX.ADD/BIN/make' man1dir => 'C:/Tools.OS2/emx/PERLLIB/MAN/man1' man1direxp => 'C:/Tools.OS2/emx/PERLLIB/MAN/man1' man3dir => 'C:/Tools.OS2/emx/PERLLIB/MAN/man3' man3direxp => 'C:/Tools.OS2/emx/PERLLIB/MAN/man3' perlpath => 'C:/Tools.OS2/emx/BIN/perl' privlib => 'C:/Tools.OS2/emx/PERLLIB/LIB' rsx => 'f:/zax/bin//rsx.exe' scriptdir => 'C:/Tools.OS2/emx/BIN' scriptdirexp => 'C:/Tools.OS2/emx/BIN' sitearch => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL/os2' sitearchexp => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL/os2' sitelib => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL' sitelibexp => 'C:/Tools.OS2/emx/PERLLIB/LIB/SITE_PERL' strings => 'f:/emx/include/string.h' sysman => 'F:/MAN/man1' timeincl => 'f:/emx/include/sys/time.h ' usrinc => 'f:/emx/include' Press <ENTER>: ==================================== You DID NOT edit 'C:/Tools.OS2/emx/PERLLIB/lib/site_perl/os2/Net/Config.pm', You may have a lot of problems with networking... Please edit this file. Tests finished. Press <ENTER>: [C:\]
Mit einem Texteditor (z.B. dem OS/2-Systemeditor) wird nun der Programmtext geschrieben. Der Dateiname ist frei wählbar, sinnvoll ist aber als Endung .pl. Die Erläuterungen zu der Programmen stehen als Kommentar im Programmtext.
#!/tools.os2/emx/bin/perl #Ein einfaches Beispiel #zur Erläuterung des Arbeitens mit Perl #1. die Zuweisungen der Variablen #einfache Variable, beginnen immer mit $ #Zuweisung, die Variable $a soll den Wert 1 bekommen $a=1; #fast jeder Perl-Befehl endet mit ; #außer Kommentare und Schleifenbefehle #Zuweisung, die Variable $b soll den Wert 3 bekommen $b=3; #Strings (Text) werden in " " oder ' ' eingeschlossen $c="Meier" $d='der "Alte" '; $A="Groß" $B="und Klein" $C="macht schon einen" $D="Unterschied!"
Dieser beinhaltet Beispiele der Ausgabe der Daten. Jedes Beispiel sollte einzeln ausprobiert werden, das Programm ist jedoch auch als ganzes Funktionsfähig (nicht vergessen: Programmteil 1 gehört ein Mal zum Programm).
#2. die Ausgabe der Werte #nun zur Tat - die Ausgabe der Werte, die den Variablen zugewiesen wurden #Der Druckbefehl (Ausgabe auf dem Bildschirm) ist einfach #\n erzeugt einen Zeilenwechsel, funktioniert aber nur in " " eingeschlossen, nicht in ' ' print "\n---------------------------------------------------\n" print "Beispiel 1\n" print $a; print $b; print $c; print $d;
Gestartet wird das Programm durch Eingabe von
perl prog1.plim OS/2-Fenster.
#auch als ein Befehl #aber unbedingt mit dem Verkettungszeichen . (aneinanderhängen) #ohne geht's nicht! print "\n---------------------------------------------------\n" print "Beispiel 2\n" print $a.$b.$c.$d;
#oder aber in " " oder ' ' dann geht es ohne Verkettungszeichen #und man kann nun auch Leerzeichen einsetzen print "\n---------------------------------------------------\n" print "Beispiel 3\n" print "$a $b $c $d"
#mit Zeilenumbruch (\n) ist's sicher besser print "\n---------------------------------------------------\n" print "Beispiel 4\n" print "$a\n$b\n$c $d\n" print "$A $B $C $D\n" print "$a\n$b"
#print kann auch rechnen print "\n---------------------------------------------------\n" print "Beispiel 5\n" print $a+$b;
#Perl sucht sich selbst heraus ob eine Variable Text oder Wert ist print "\n---------------------------------------------------\n" print "Beispiel 6\n" print "$b\n" #$b um 10 erhöhen $b=$b+10; print "$b\n" #an die Zahl wird ein Text angehängt, damit ist $b ein String (Zeichenkette) $b=$b."ist nun keine Zahl mehr" print "$b\n" #aber wenn ich wieder 10 addiere wirft Perl den Textteil weg $b=$b+10; print "$b\n"
Viel Spass beim Probieren!
Quellenverzeichnis:
|
[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org