::Tips & Tricks / Verschiedenes / Perl / 7. Besonderes Seite drucken
  der verein   projekte   veranstaltungen   hilfestellung   tips & tricks   fun   
 
  
  grunds├Ątzliches
  
  fenstermanager
  
  web, mail & news
  
  multimedia
  
  novell/suse
  
  gentoo
  
  VERSCHIEDENES
 externe usb-platten mounten
 datenrettung
 perl
  
  links


home
sitemap
suche
login
hilfeforum
impressum



Finde uns auf:
 

7. Besondere Anweisungen

Perl verf├╝gt ├╝ber einige sehr interessante und m├Ąchtige Anweisungen.

7.1 split

Mit split kann ein String anhand eines Feldtrenners zerlegt werden.

<typocode>

($dd, $mm, $year) = split(/\./, $datum);

</typocode>

Das Beispiel zerlegt ein Datum des Formats tt.mm.jj in die drei Teile Tag, Monat und Jahr. Diese Anwweisung ist unempfindlich gegen zwei oder vierstellige Jahreszahlen, da die einzelnen Felder durch den Punkt begrenzt werden, die L├Ąnge der einzelnen Felder wird nicht beachtet.

 

Einige Zeichen wie z.B. der Punkt m├╝ssen durch einen Backslash von ihrer besonderen Bedeutung befreit werden.

7.2 die

Die Anweisung die dient dem geordneten Abbruch eines Perl-Skripts im Fehlerfall. Um beim Fehlversuch eine Datei zu ├Âffnen das Programm mit der System-Fehlermeldung zu beenden, schreibt man folgendes:

<typocode>

open(DH, "myfile") || die "$0: myfile - $!";

</typocode>

Die speziellen Variablen $0 und $! enthalten den Skriptnamen und die Systemfehlermeldung.

7.3 s///

Der folgende Operator ersetzt das erste Zeichen mit dem zweiten Zeichen.

<typocode>

$line =~ s/,/./; # komma durch punkt ersetzen

</typocode>

Der Operator =~ erlaubt das gleichzeitige lesen und zuweisen an die Variable. Die Ersetzung wird sonst auf die Eingabe in $_ durchgef├╝hrt. Die Ersetzung wird nur einmal ausgef├╝hrt.

 

Durch anh├Ąngen eines g an den Operator werden alle vorkommen des ersten Zeichens mit dem zweiten ersetzt (global).

 

Wird ein i angeh├Ąngt, dann wird bei der Suche nach dem ersten Zeichen nicht zwischen Gro├č- und Kleinschreibung unterschieden. Die Parameter k├Ânnen auch kombiniert werden:

<typocode>

$line =~ s/,/./gi; # global und unabhaengig der schreibweise ersetzen

</typocode>

7.4 pack/unpack

<typocode>

pack SCHABLONE, LISTE

LISTE = unpack SCHABLONE, AUSDR

</typolist>

Mit pack und unpack k├Ânnen Daten in ein festgelegtes bin├Ąres Format geschrieben und gelesen werden.

 

F├╝r das Format gibt es wie bei printf festgelegte Datenzuordnungen:

<typolist>

a,A - ein ASCII-String mit und ohne Nullen aufgef├╝llt

c,C - ein signed oder unsigned Zeichen

d,f - Flie├čkommazahl mit doppelter und einfacher Genauigkeit

i,I - Integer mit und ohne Vorzeichen

l,L - Long mit und ohne Vorzeichen

s,S - Short mit und ohne Vorzeichen

x,X - Nullbyte, Gehe ein Byte zur├╝ck

</typolist>

Durch eine anschlie├čende Zahl kann ein Wiederholung realisiert werden. Die beiden folgenden Ausdr├╝cke sind identisch:

<typocode>

"aaaaa"

"a5"

</typocode>

Das folgende Beispiel schreibt mehrere Variablen in eine Struktur und zerlegt diese anschliessend wieder in einzelne Variablen.

<typocode>

$i1 = 10;

$s1 = "hallo Welt";

$l1 = 900000;

$p = pack "ila10", $i1, $l1, $s1;

($i2, $l2, $s2) = unpack "ila10", $p;

print "$i2 $l2 $s2\n";

</typocode> Sollte ein String zu lang sein f├╝r das angegebene Format, so wird er einfach abgeschnitten! Zahlen bekommen bei falschen Formaten unsinnige Werte.

 

7.5 defined

Nicht initialisierte Variablen werden von Perl nicht als Fehler behandelt. Bei Arrays und Hashes werden sie bei Bedarf stillschweigend angelegt.

 

Eine Variable kann mit defined getestet werden.

<typocode>

$a = "test";

if ( ! defined($myhash{$a}) )

{

$myhash{$a} = 1;

}

</typocode>

Falls das Hash-Element mit dem Key test noch nicht existiert, (undefiniert) ist, wird ein entsprechendes Hash-Element erzeugt.