WILLKOMMEN BEI ANDREI BELOOUS!!!

Perl-Referenz ,G. Willee, Programmieren in der CL-2.
IKP,Uni Bonn,WS 2003-2004
Verfasst von Andrei Beloous.
14.12.2002.


zurück zum Studium/IKP     zur Startseite


INHALTSVERZEICHNIS:

  1. UNTERFUNKTIONEN
  2. FUNKTIONEN
  3. KONTROLLSTRUKTUREN.FALLUNTERSCHEIDUNGEN.ANWEISUNGEN
  4. SCHLEIFEN
  5. VERGLEICHSOPERATOREN
  6. REGULÄRE AUSDRÜCKE
  7. LITERATURVERZEICHNIS

UNTERFUNKTIONEN.

Unterfunktionen, Unterprogramm oder Subfunktionen sind selbst erstellte Funktionen,
um bestimmte Abläufe stets wieder verwenden zu können, ohne jedes Mal alle Zeilen wiederholt
im Quelltext aufführen zu müssen.Die Markierung von eigenen Unterfunktionen erfolgt durch ein
vorgestelltes Und-Zeichen(&).
Der Code für Unterfunktionen sieht folgendermassen aus :
sub name {Anweisungsblock }

>>>zurük zum Inhaltsverzeichnis

FUNKTIONEN:

  1. chdir()
  2. - (engl.change directory - Verzeichnis wechseln)
    Beispiel :
     chdir ("/windows");

  3. chomp()
  4. - entfernt das Newline (Zeilenumbruch)-Zeichen.
    Beispiel:
    $bs = chomp($string);

  5. chop()
  6. - entfernt immer das letzte Zeichen eines Strings, egal
    um welches Zeichen es dabei handelt, und gibt es als Rückgabewert weiter.
    Beispiel :
    $bs = chop($satz);

    Das letzte Zeichen von $satz wird entfernt und in $bs gespeichert.
  7. die()
  8. beendet sofort das Programm im Falle eines auftretenden Fehlers.
    Der Befehl die() beendet das Programm sofort mit Ausgabe einer Fehlermeldung.
    Da der Befehl die() über "or" verbunden hinter dem Befehl open() steht, wird es nur
    ausgeführt, wenn das Öffnen der Datei fehlschlägt.
    Beispiel :
    die "Datei nicht gefunden";

  9. eof()
  10. liefert wahr zurück, wenn sich das Dateihandle am Ende der Datei befindet.
  11. exit()
  12. die Ausführung des ganzen Programms wird beendet. Die Möglichkeit , eine Endlos-
    schleife zu verlassen.
  13. format STDOUT
  14. - Formatiert die Ausgabedatei.
    Ein Format hat immer folgende Form:
    format NAME =
    Zeile mit Formatieranweisungen
    Werte zum Ausgeben
    .
    Beispiel :
    @   Dieses Zeichen leitet den Beginn eines Formats ein, es können beliebig viele weitere
    andere Zeichen folgen.
    >   Der zugewiesene Wert wird rechtsbuendig ausgegeben.Der Kammeraffe(@) wird bereits als eine
    Stelle gewertet.
    <  Der zugewiesene Wert wird linksbuendig ausgegeben.Der Kammeraffe(@) wird bereits als eine
    Stelle gewertet
    "." als Abschluss der Formatdefinition.
    format STDOUT =
    Nachname:  @<<<<<<<<<      ^<<<<<<<<<<<<<<<<<<<
                       $nachname,             $Beschreibung
    .
  15. index()
  16. ermittelt die Position des ersten Vorkommens eines Teilstring im String.
    Die Position wird dabei als Zahlenwert zurückgegeben, beginnend mit Index 0.
    Beispiel :
    $string = "tagaus tagein tagung"
    $index = index($string, 'tag');

    rindex() beginnt die Suche von hinten und liefert dementsprechend das letzte Vorkommen
    des Teilstrings.
    Beispiel :
    $string = "tagaus tagein tagung"
    $rindex = rindex($string, 'tag');

  17. last()
  18. beendet den Anweisungsblock und die Schleife sofort, ohne zuvor die Bedingung
    zu überprüfen.
    Beispiel :
    last SCHLEIFE if($eingabe >0);

  19. length()
  20. - ermittelt die Länge eines Strings
    Beispiel :
    $length = length($string);

  21. next()
  22. führt den Anweisungsblock einer Schleife nicht weiter aus.Stattdessen wird die
    Schleife wieder von vorn begonnen, inklusive Überprüfung der Bedingung.
    Beispiel :
    next SCHLEIFE if($eingabe>0);

  23. open()

  24. Der Befehl "open" oeffnet externe Files.
    Ausgabedateien werden mit mit einem ">" vor dem Dateinamen geöffnet.
    Beispiel :
     open (OUT,">vertikal.txt") or die "cannot open vertikal.txt\n";

  25. pop()
  26. entfernt das letzte Element aus einer Liste.
    Beispiel :
    print pop(@liste);

  27. print()
  28. - gibt die Informationen auf dem Bildschirm aus.
    Beispiel :
    print "Hallo"; 
    print "$variable";
    print $variable;

  29. push()
  30. setzt ein oder mehrere Elemente an das Ende der Liste,
    Beispiel push(@alist, $scalar);
    Fügt $scalar ans Ende der Liste ein.
  31. q()
  32. gleicht einem einfachen Anführungszeichen.
    Beispiel :
    $text ='Dies ist ein Satz.';
    $text =q(Dies ist ein Satz.");

  33. qq()
  34. gleicht einem doppelten Anführungszeichen.
    Beispiel :
    $text ="Dies ist ein Satz.";
    $text =qq(Dies ist ein Satz.);

  35. qw
  36. bestimmt die Grenzen zwischen den Elementen eines Arrays über einen Leerraum.
    Beispiel:
    @list = ("String1", "String2");
    @list = qw(String1 String2);

  37. return ()
  38. - liefert einzelne Variablen oder das Ergebnis einer Berechnung zurück.
  39. reverse()
  40. - kehrt eine Zeichenkette um. Liefert das Ergebnis der Umkehrung als Rückgabewert.
    Beispiel :
    $string = reverse($string);

  41. rindex()
  42. biginnt die Suche von hinten und liefert dementsprechend das letzte Vorkommen des Teilstrings.
    Beispiel :
    $string = "tagaus tagein tagung"
    $rindex = rindex($string, 'tag');

  43. shift()
  44. entfernt das erste Element(mit der Nummer 0) aus einer Liste.
    Beispiel :
    print shift(@liste);

  45. split()
  46. Mit "split" können Strings in einzelne Teilstrings zerlegt werden.Das Ergebnis kann
    einem Array übergeben werden.Trennzeichen sind ein oder mehrere ' '(ohne "+" nur ein Blank).
    Man gibt der Funktion einen Suchwert und einen String, worauf sie den kompletten String
    säuberlich zerlegt in der Liste liefert.Der Suchwert muss immer zwischen zwei einfachen
    Schrägstrichen / / oder Slashes stehen. Beispiel :
    @liste=split(//,$var);

    Wir zerschneiden den String in den Leerstellen.
  47. substr()
  48. mit der Funktion substr() kann man einen String auf den Buchstaben genau zerlegen
    und einen Teolstring herausschneiden oder ?berschreiben.
    substr(string, position, länge)
    $ziel=substr($mutt,Anf_pos,Laenge);
    $var=substr("Hallo Perl", 3, 6);
    print $var;
    Ergebnis: lo Per
  49. unshift()
  50. das Gegenteil von push(). Setzt die Elemente an den Listenanfang.
  51. write()
  52. ( write(STDOUT)) - gibt die Daten so aus, wie sie das erstellte Format beschreibt.
  53. STDIN, STDOUT
  54. - symbolische Namen für Ein-und Ausgabe.

>>>zurük zum Inhaltsverzeichnis

KONTROLLSTRUKTUREN.FALLUNTERSCHEIDUNGEN.ANWEISUNGEN.

If-Anweisung: gewisse Anweisungen werden ausgeführt, wenn eine Bedingung wahr ergibt.
Oder wir fuuml;hren Anweisungen aus, wenn eine Bedingung nicht zutrifft.
if-Anweisung:
if(zwingend)
elsif(optional, mehrmalig)
else(optional, einmalig)
unless - die einfache Negation der if-Anweisung.
Syntax:
if (Bedingung) {Anweisungsblock}
elsif(weitere Bedingung) {Anweisungsblock}
elsif(weitere Bedingung) {Anweisungsblock}
else {Anweisungsblock}
unless (Bedingung){Anweisungsblock}
Beispiel:

$zahl = 10; 
if($zahl > 5 && $zahl<9) {print "Zahl ist größer 5.\n";}
elsif($zahl>9){print "Zahl ist größer 9.\n";}
else {print "Zahl kleiner 6.\n";}

Beispiel für unless :
unless($alter>100)
{
print "Mögliches Alter.\n";
}

>>>zurük zum Inhaltsverzeichnis

SCHLEIFEN.


Eine Schleife wird so lange durchgeführt, bis die Bedingung nicht mehr wahr ist.
1)while-Schleife
Die while-Schleife wird solange durchlaufen, wie die Bedingung wahr ist.
Syntax:
while (Bedingung) {Anweisungsblock}
Z.B. while($i<10){print...}-die Bedingung ist wahr , solange $i kleiner als 10 ist.
2)until-Schlefe
Die Negation der while-Schleife.
Aktion bis Bedingung eintrifft.
Syntax (identisch mit der der while-Schleife):
until (Bedingung) {Anweisungsblock}
3)for-Schleife
Wiederholbedingung.Die for-Schleife läuft eine fest vorgegebene Anzahl oft durch.
Die Anzahl der Durchläufe wird traditionell von $i gespeichert.
Syntax:
for (Zähler;Wiederholbedingung;Änderung) {Anweisungsblock}
z.B.for($i=0;$i<10;$i++) {Anweisungsblock}
4)foreach-Schleife.
Foreach-Schleife läuft alle Elemente eines Arrays einmal durch.
Syntax:
foreach VARIABLE (ARRAY oder LISTE) {Anweisungsblock}
Beispiel:

@array = (1,2,3,4,5);
foreach (@array) {}

>>>zurük zum Inhaltsverzeichnis

VERGLEICHSOPERATOREN (wichtig bei Bedingungsformulierung).


Um einen wahren oder falschen Wert zu erzeugen , werden verschiedene Vergleichsoperatoren benötigt.

Vergleichsoperatoren
Vergleich    Zahl     Zeichenkette
gleich    ==     eq <equal>
ungleich    !=    ne <not equal>
kleiner als    <    lt <less than>
größer als   >    gt <greater than>
kleiner/gleich    <=    le <less/equal>
größer/gleich    >=   <greater/equal>

>>>zurük zum Inhaltsverzeichnis

REGULÄRE AUSDRÜCKE.

Reguläre Ausdrücke sind Zeichenmuster, die mit einer Zeichenkette (String) nach Regeln
verglichen werden zum Zweck der weiteren Bearbeitung des Strings.

Aktionen bei regulären Ausdrücken: Der zu untersuchende String wird jeweils durch   =~  mit dem regulärem Ausdruck verknüpft (bzw.durch   !~,   wenn auf Nichtübereinstimmung getestet wird). Wird kein String explizit angegeben, wird der Speicher   $_   ausgewertet.
Beispiel:

$ex(string) = 'Hausherr'; 
$ex=~/sh/;(regulärer Ausdruck, "das Suchmuster") #es wird "wahr" beim
                        #Finden des Musters ausgegeben, sonst "falsch"

Die Angabe von 'i' hinter dem letzten Trennzeichen besagt, dass die
Gross-/Kleinschreibung ignoriert werden soll.
Beispiel:
$ex =~/sh/i;# ist wahr, wenn auf $ex der Wert 'SH', 'Sh', 'sh' oder 'sH'
    # gefunden wird.

Position des Suchmusters auf dem String:
Die Angabe von '^' vor dem Suchmuster besagt, dass der String mit dem folgenden Zeichen
anfangen, die von '$' hinter dem Suchmuster, dass der String mit dem vorhergehenden
Zeichen enden muss.
Soll das Muster an der Wortgrenze stehen, muss '\b' vor bzw. hinter dem Suchmuster stehen.

Metazeichen: Als Wildcard dient in der Regel der '.'. Will man ein fordefiniertes Zeichen
in einem Muster als reguläres Zeichen suchen, muss dieses mit einem '\' markiert werden,
ein Punkt also als '\.'.

Quantifyer (Auswahl)
*        ->Zeihen oder Muster kommt beliebig oft vor
?        ->Zeihen oder Muster kommt ein- oder keinmal vor
+        ->Zeihen oder Muster kommt einmal oder beliebig oft vor

$ex=~/a.*b/ # ist wahr, wenn 'a',  beliebige Zeichen und 'b' vorkommen

{3,5}  ->Zeichen oder Muster muss mindestens 3 mal, höchstens 5 mal vorkommen
{3,}    ->Zeichen oder Muster muss mindestens 3 mal vorkommen.
{2}     ->Zeichen oder Muster muss genau 2 mal vorkommen

Gruppieren von Mustern
geschieht durch Klammerung

 $ex=~/(ab)+(xyz)?/;#ist wahr, wenn 'ab' mindestens einmal vorkommt
#und ggf. 'xyz'

Alternativen:
werden durch '|' markiert

$ex=~/(ab)|(xyz)/;# ist wahr, wenn entweder 'ab' oder 'xyz' vorkommt.

Zeichenklassen:
Zeichenklassen werden in regulären Ausdrücken durch '[' und ']' definiert.
Ein Match ist wahr, wenn mindestens eines der definierten Elemente auf dem String
angetroffen wird.Sollen alle Zeichen außer den definierten Zeichen gefunden werden,
wird ein'^' vor die Zeichenliste gesetzt.

$ex=~/[gerd]/i;#ist wahr, wenn mindestens eines der aufgeführten
      # Zeichen einmal in $ex erhalten ist, wobei die
#Groß-/kleinschreibung ignoriert wird.

$ex=~/[^gerd]/i;#ist wahr,wenn keines der aufgeführten Zeichen in $ex
#erhalten ist.

Es gibt auch Abkürzungsmöglichkeiten (z.B.[a-f] für [abcdef]).

Anwendungen beim Mustervergleich und bei der Musterersetzung

Match (prüft Vorkommen des Musters, man kann auch den Operator 'm' voransetzen)
Beispiele:

$v=~m/gerd/i;  #ist wahr, wenn auf $v der Wert 'GERD', 'GeRd', 'gerd' 
#etc gefunden wird
#ist identisch mit

$=~/gerd/i;
$v=~/gerd$/i;   #ist wahr, wenn $v mit dem Wert 'GERD', 'GeRd', 'gerd'
#etc endet

$v=~m/^gerd/i;  #ist wahr, wenn $v mit dem Wert 'GERD', 'GeRd', 'gerd'
#etc beginnt

$a!~/^zu/       #ist wahr, wenn $a NICHT mit 'zu' beginnt

$ein=~/[mdclxvi]/i; #ist wahr, wenn der String mindestens eines der
#in '[...]' angegebenen Zeichen enthällt

$ein=~/[^mdclxvi]/i;#ist wahr, wenn der String mindestens ein Zeichen
#enthällt, das nicht zu den in '[...]'
# angegebenen Zeichen gehört

Substitute(Operator 's', ersetzt das erste Vorkommen des linken Teils des angegebenen Musters
             durch den rechten Teil, kann auch leer sein)
              Bei Angabe von 'g'( für globally) werden ALLE Vorkommen ersetzt
Beispiele:

$ein=~(s/i/1/gi);#Alle Vorkommen von 'i' und 'I' werden durch '1' ersetzt.

$a=~s/en$/-en/;  #'en' am Ende von $a wird durch '-en' ersetzt

$a=~s/zu/-zu-/;  # das erste Vorkommen von 'zu' auf $a wird durch '-zu-'
#ersetzt.

$c=~s/^m//i; #ist wahr, wenn am Anfang von $c ein 'm' oder 'M'
#gefunden wird;Aktion:Abschneiden dises Zeichen
#(Erstzen durch Nullstring)

Transliterate(keine Anwendung eines regulären Ausdrucks! Operator 'tr', ersetzt entsprechende
Elemente des linken Teils durch die des rechten Teils)
Beispiel:

$ein=~tr/iIvVxXlLcCdDmM/11223344556677/;
#hatdenselben Effekt wie
$ein=~tr/ivxlcdmIVXLCDM/12345671234567/;
#Ersetzt jedes 'i' oder 'I' durch '1', jedes
#'v' durch '2'etc

Optionen für das Suchen und Suchen/Ersetzen(Substitution)
Optionen für das Suchen und Suchen/Ersetzen(Substitution)
OptionBedeutung
icase-insensitive: Die Suche des Suchmusters erfolgt ohne Berücksichtigung
der Groß- und Kleinschreibung. Dadurch kann WORT gefunden werden,
wenn nach Wort gesucht wird.
gglobal: eher interessant für die Substitution. Es wird nicht nur das erste
gefundene Suchmuster im String ersetzt und danach abgebrochen, sondern alle.
mmulti-line:
ssigle-line:
xextended:
ocompile once:
eDas Ersetzmuster wird zuerst evaluiert, so können auch mathematische Operationen
oder Funktionen verwendet werden. Man kann auch zwei oder mehrere e schreiben,
je nach dem, wie oft das Ersetzmuster evaluiert werden soll.

>>>zurük zum Inhaltsverzeichnis

Literaturverzeichniss:

© Andrey Belous, 2004.



Hosted by uCoz