Dieser Anhang enthält eine kurze alphabetisch geordnete Referenz der vordefinierten Perl-Funktionen. Wenn Sie eine Funktion suchen, die es nicht gibt, verzagen Sie nicht. Ihre Chancen stehen trotzdem gut, dass irgend jemand ein Modul geschrieben hat, das eine Funktion, wie Sie sie benötigen, enthält. Eine Liste der wichtigsten verfügbaren Perl-Module finden Sie in Anhang B.
Beachten Sie, dass nicht alle Funktionen, die in diesem Anhang aufgeführt sind, von allen Perl-Versionen unterstützt werden. Dem Kapitel 18, »Perl und das Betriebssystem«, können Sie entnehmen, welche Funktionen für Windows- oder Macintosh-Rechner nicht zur Verfügung stehen. Als ultimative Referenz sollten Sie die Dokumentation zu Ihrem Perl-Port zu Rate ziehen.
Weitere Informationen zu den jeweiligen Funktionen finden Sie in der perlfunc-
Manpage. Wie alle Perl-Dokumentationen können Sie diese Manpage unter Unix mit
dem Befehl man
, unter Unix und Windows mit dem Befehl perldoc (perldoc perlfunc
zeigt die ganze Liste und perldoc -f
die einzelnen Funktionen) und auf dem Mac mit
der Shuck-Anwendung aufrufen.
Die gesamte Perl-Dokumentation ist auch über das Web unter http://www.perl.com/
CPAN-local/doc/manual/html/pod/
abrufbar.
Neben den Perl-spezifischen Manpages verweist dieser Anhang auch häufig auf
andere Unix-Manpages (vornehmlich deshalb, weil Perl oft von Unix-Features
Gebrauch macht). Die Unix-Manpages sind in numerierten Kapiteln zusammengefaßt.
Wenn Sie auf ein Element stoßen, hinter dem eine Zahl in Klammern steht, weist
diese Zahl darauf, dass dieses Element in dem entsprechenden Kapitel der Manpages
beschrieben ist. So finden Sie zum Beispiel fseek(2)
in Kapitel 2 des Unix-
Handbuches. Um die Funktion fseek
in Kapitel 2 nachzuschlagen, würden Sie also
folgenden Unix-Befehl eingeben:
man 2 fseek
Auf manchen Systemen lautet der Befehl ein wenig anders:
man -s 2 fseek
Der Befehl man man
zeigt Ihnen Hilfe zu dem Befehl man
an.
Hier finden Sie die Perl-Funktionen in alphabetischer Reihenfolge.
abs WERT
Liefert den absoluten Wert von WERT
zurück. WERT
kann eine Zahl (wie -7
) oder ein
Ausdruck sein.
accept NEUERSOCKET, GENERISCHERSOCKET
accept
wird verwendet, um eine einkommende Socket-Verbindung anzunehmen.
Wenn eine Verbindung hergestellt wurde, wird die gepackte Adresse zurückgeliefert.
Andernfalls lautet der Rückgabewert falsch. Entspricht dem Systemaufruf accept(2)
.
alarm SEKUNDEN
Die alarm
-Funktion sendet ein SIGALRM
an das Programm, nachdem die in SEKUNDEN
spezifizierten Sekunden verstrichen sind. Es kann nur ein Alarm aktiv sein. Wenn Sie
diese Funktion aufrufen, während noch ein anderer Alarm läuft, wird der laufende
Alarm durch den aktuelleren Aufruf ersetzt. Wenn Sie die Funktion mit dem
Argument 0
aufrufen, wird der aktuelle Alarm unterbrochen, ohne dass ein neuer
gestartet wird. Wird für SEKUNDEN
keine Zahl angegeben, wird der Wert in $_
verwendet.
atan2 Y, X
Liefert den Arkustangens von X/Y
in dem Bereich von -p
bis p
zurück. Weitere
Funktionen für die Tangensoperationen gibt es in den Modulen POSIX
und
Math::Trig
.
bind SOCKET, NAME
Die Funktion bind
bindet eine Netzwerkadresse an einen Socket. NAME
sollte dabei die
gepackte Adresse für verwendete Art von Socket enthalten. Ist die Funktion bind
erfolgreich, wird wahr zurückgeliefert, andernfalls falsch. Entspricht dem Systemaufruf
bind
.
binmode DATEIHANDLE
binmode
übernimmt als Argument ein Datei-Handle und gibt an, dass die Daten im
Binärformat (und nicht im ASCII-Format) in das Datei-Handle geschrieben
(beziehungsweise daraus gelesen) werden sollen. Unter Unix hat diese Funktion keine
Auswirkung, aber für MS-DOS und andere archaische Plattformen ist sie wichtig. Die
Funktion sollte nach dem Öffnen einer Datei und vor irgendwelchen Eingabe-/
Ausgabeoperationen auf diese Datei aufgerufen werden.
bless REFERENZ, KLASSENNAME
bless
wird in der objektorientierten Perl-Programmierung verwendet, um das, was
mit REFERENZ
referenziert wird, dem Paket KLASSENNAME
zuzuweisen. Wird
KLASSENNAME
fortgelassen, wird REFERENZ
dem aktuellen Paket zugewiesen. bless
liefert die Referenz zurück, die mit bless
zugewiesen wird. Detailliertere
Informationen finden Sie in der perlobj-Manpage.
caller AUSDRUCK
caller
caller
liefert den Kontext des aktuellen Subroutinenaufrufs zurück. In einem skalaren
Kontext liefert caller
den Namen des Pakets, aus dem die Subroutine aufgerufen
wurde, in einem Listenkontext liefert sie den Paketnamen, den Dateinamen des
Programms und die Zeilennummer des Aufrufs. Wenn ein AUSDRUCK
mit angegeben
wird, liefert caller
zusätzliche Informationen zur Verfolgung des Stacks. AUSDRUCK
gibt an, um wie viele Aufruf-Frames der Stack, ausgehend vom aktuellen Frame,
zurückgegangen werden muss. Wird AUSDRUCK
angegeben, wird die folgende Liste an
Werten zurückgegeben:
($package, $file, $line, $subname, $hasargs, $wantarray) = caller(bel_funk);
chdir AUSDRUCK
chdir
übernimmt einen Ausdruck als Argument und versucht, das aktuelle Verzeichnis
auf das im Ausdruck angegebene Verzeichnis zu setzen. Wird kein Argument
mitgeliefert, versucht die Funktion, in das Home-Verzeichnis des aktuellen Benutzers
zu wechseln.
chmod LISTE
chmod
dient dazu, die Zugriffsberechtigungen für die im Argument LISTE aufgeführten
Dateien zu ändern. Das erste Element in LISTE muss - in Oktalnotation - der
numerische Modus für die Dateien sein. Er sollte auch das SUID-Bit mit einschließen.
Sehen Sie hier ein Beispiel für die Anwendung von chmod
:
chmod 0755, @dateien;
Beachten Sie, dass das erste Element der Liste nicht in Anführungszeichen steht. Es ist einfach nur eine Zahl. Weitere Informationen zu den Datei-Zugriffsrechten finden Sie in der chmod-Manpage.
chomp VARIABLE
chomp LISTE
chomp
chomp
ist die sichere Version von chop
, die als nächstes beschrieben wird. Die
Funktion entfernt alle Zeilenenden, die mit $/
übereinstimmen (die Variable, die das
Eingabedatensatz-Trennzeichen, normalerweise ein Neue-Zeile-Zeichen, enthält).
Wenn diese Funktion im Absatzmodus aufgerufen wird, werden alle angehängten
Neue-Zeile-Zeichen aus dem String entfernt.
chop VARIABLE
chop LISTE
chop
chop
wird verwendet, um das letzte Zeichen in einem String zu entfernen. Ihre
ursprüngliche Aufgabe bestand darin, das Zeilenvorschubzeichen am Ende einer Zeile
möglichst problemlos zu entfernen (wenn Sie eine Datei Zeile für Zeile bearbeiten, ist
es oft sinnvoll, das Zeilenvorschubzeichen aus den Zeilen zu entfernen, bevor Sie mit
der Arbeit beginnen). Das Problem mit chop
ist, dass die Funktion jedes letzte Zeichen
vom String entfernt. Ist das letzte Zeichen ein Zeilenvorschubzeichen - wunderbar.
Aber wenn nicht, verlieren Sie das letzte Zeichen, das durchaus eine Bedeutung haben
kann.
while (<EINGABEDATEI>) {
# Beachten Sie, dass in diesem Beispiel $_ als Argument für die
# chop-Funktion verwendet wird.
chop;
push (@names);
}
Wird chop
ohne Argument verwendet, wird das letzte Zeichen von $_
entfernt. Wird
eine Liste übergeben, wird aus allen Elementen der Liste das jeweils letzte Zeichen
entfernt.
chown LISTE
chown
wird verwendet, um die Besitzrechte der Dateien, die in LISTE
stehen, für
Benutzer und Gruppe zu setzen. Zurückgeliefert wird die Anzahl der Dateien, für die
die Besitzrechte erfolgreich geändert wurden. Die ersten beiden Elemente von LISTE
müssen die numerische UID und GID des Benutzers und der Gruppe sein, die Besitzer
der Dateien werden. Normalerweise kann nur der root-Benutzer die Besitzrechte von
Dateien in einem System ändern.
chr ZAHL
Die Funktion chr
liefert das Zeichen aus der ASCII-Tabelle zurück, das dem
Zahlencode entspricht, der der Funktion übergeben wurde. So liefert zum Beispiel
chr(80)
ein R
zurück. Mit der Funktion pack
können mehrere Zeichen gleichzeitig
konvertiert werden.
chroot VERZEICHNISNAME
Die Funktion chroot
ist identisch mit dem gleichnamigen Systemaufruf (Details sind
der Manpage chroot(2) zu entnehmen). Im wesentlichen teilt chroot
dem gerade
ausführenden Programm sowie allen exec
-Aufrufen und Subprozessen mit, dass das in
VERZEICHNISNAME
angegebene Verzeichnis als neues Root-Verzeichnis zu verwenden
ist. Pfade, die mit /
anfangen, beginnen danach mit dem Verzeichnis
VERZEICHNISNAME
und nicht mehr mit dem eigentlichen Root-Verzeichnis des
Dateisystems. Nur der root-Benutzer kann die Funktion chroot
verwenden.
close DATEIHANDLE
Die Funktion close
wird verwendet, um ein zuvor geöffnetes Datei-Handle zu
schließen (unabhängig davon, ob es sich um eine Datei oder eine Pipe handelt). Sie
führt die notwendigen Aufräumarbeiten auf der Systemebene durch und liefert wahr
zurück, wenn alle Operationen erfolgreich waren. Beachten Sie, dass alle Datei-
Handle automatisch geschlossen werden, wenn ein Perl-Programm beendet wird, so
dass Sie oft davonkommen, ohne explizit alle Datei-Handle zu schließen, die Sie
geöffnet haben.
closedir VERZEICHNISHANDLE
closedir
schließt ein Verzeichnis, das mit der Funktion opendir
geöffnet wurde.
connect SOCKET, NAME
connect
versucht, eine Verbindung zu einem entfernten Socket herzustellen. NAME
sollte die gepackte Adresse entsprechend dem Typ des Sockets enthalten. Die
Funktion liefert wahr zurück, wenn sie erfolgreich war, im anderen Fall falsch. Diese
Funktion ist identisch mit dem Systemaufruf connect
.
cos AUSDRUCK
Liefert den Kosinus von AUSDRUCK zurück. Für die inverse Kosinusoperation
sollten Sie die Funktion POSIX::acos()
oder das Modul Math::Trig
verwenden.
crypt NORMALERTEXT, WERT
Die crypt
-Funktion wird dazu verwendet, um Strings auf die gleiche Weise zu
verschlüsseln, wie Paßwörter in einer Unix-Paßwortdatei gespeichert werden. Die
Funktion übernimmt zwei Argumente: den String, der verschlüsselt werden soll, und
einen Wert, mit dem der Verschlüsselungsalgorithmus initialisiert wird. Die crypt
-
Funktion ist eine Einbahnstraße: Es ist keine Methode bekannt, mit der man Text, der
mit crypt
verschlüsselt wurde, wieder entschlüsseln kann (Unix testet Paßwörter,
indem crypt
auf die vom Benutzer eingegebenen Paßwörter angewendet und das
Ergebnis dann mit den verschlüsselten Paßwörtern in /etc/passwd
verglichen wird).
dbmclose HASH
dbmclose
löst die Bindung zwischen einem HASH
und der DBM-Datei, mir der er
verbunden ist. Diese Funktion wurde inzwischen durch die Funktion untie
ersetzt.
dbmopen HASH, DBNAME, MODUS
dbmopen
bindet eine dbm
, ndbm
, sdbm
, gdmb
oder Berkeley-DB-Datei an einen Hash.
HASH
ist der Name der Hash-Variablen, an die die Datenbank gebunden wird, und
DBNAME
der Name der Datenbankdatei ohne die Extension. Wenn DBNAME
nicht
angegeben wird, wird eine neue Datei erzeugt, deren Zugriffsberechtigungen durch
MODUS
spezifiziert werden.
Diese Funktion wurde inzwischen durch tie
abgelöst.
defined AUSDRUCK
defined
wird verwendet, um Ausdrücke zu identifizieren, die den undefinierten Wert
(im Gegensatz zu 0, Neue Zeile
oder einen anderen leeren Rückgabewert)
zurückliefern. Mit Hilfe der Funktion kann man festzustellen, ob eine Subroutine
existiert oder eine Skalarvariable definiert wurde. Wenn kein AUSDRUCK übergeben
wird, prüft defined
, ob $_
undefiniert ist.
delete AUSDRUCK
Die delete
-Funktion wird verwendet, um Elemente aus einem Hash zu entfernen.
Dabei gehen Sie so vor, dass Sie der Funktion einfach den Namen des Hash und den
Schlüssel, der entfernt werden soll, übergeben. Sehen Sie dazu folgendes Beispiel:
delete $hash{$key};
Da Sie nur ein einziges Element im Hash löschen wollen, referenzieren Sie die Hash-
Variable im skalaren Kontext (mit $
).
die LISTE
die
übernimmt eine Liste als Argument. Wenn die
aufgerufen wird, wird das
Programm beendet, der Wert von $!
zurückgeliefert und die als Argument an die
übergebene Liste auf die Standardfehlerausgabe geschickt. Wenn die Liste nicht mit
einem Neue-Zeile-Zeichen endet, werden der Name des Programms und die
Zeilennummer der Zeile, bei der die Ausführung unterbrochen wurde, zusammen mit
einem Neue-Zeile-Zeichen an die Ausgabe der Funktion angehängt.
open (FILE, $datei) or die "$datei kann nicht geöffnet werden";
Wenn $datei
nicht geöffnet werden kann, erzeugt diese Zeile folgende Ausgabe:
/tmp/datei kann nicht geöffnet werden at test_program line 13.
do BLOCK
do SUBROUTINE(LISTE)
do AUSDRUCK
Wenn diese Funktion mit einem Codeblock in BLOCK
aufgerufen wird, führt do
die
Anweisungen in dem Block aus und liefert den Wert der letzten Anweisung in dem
Block zurück. Wenn do
zusammen mit einem Schleifenausdruck verwendet wird, wird
BLOCK
ausgeführt, bevor die Schleifenbedingung das erste Mal getestet wird.
do SUBROUTINE
ist eine veraltete Methode, um eine Subroutine aufzurufen, und do
AUSDRUCK
stellt eine Möglichkeit dar, Code in einer anderen Datei auszuführen.
AUSDRUCK
wird in diesem Falle als der Dateiname einer Perl-Datei interpretiert, deren
Inhalt ausgeführt wird. Auch wenn sich do
auf diese Weise einsetzen läßt, sollten Sie
trotzdem auf require
und use
ausweichen, die robuster sind.
dump LABEL
Mit dump
bewirken Sie, dass Perl einen Speicherauszug (dump) des Programms
ausgibt. Anschließend können Sie mit dem undump-Programm eine binäre Datei
erzeugen, die die Ausführung mit einem goto LABEL
-Befehl beginnt.
each HASH
Die each
-Funktion wird verwendet, um Werte für die Verarbeitung in einer Schleife
aus einem Hash herauszuholen. Sie verhält sich je nach Kontext (skalar oder Liste)
unterschiedlich.
Im skalaren Kontext liefert die each
-Funktion den Schlüssel für das nächste Element
im Hash zurück. Sie läßt sich daher folgendermaßen anwenden:
while ($key = each %hash) {
$hash{$key}++;
}
Im anderen Falle, das heißt in einem Listenkontext, liefert die each
-Funktion eine
zweielementige Liste, die den Schlüssel und den Wert für das nächste Element im
Hash enthält. Das sieht dann wie folgt aus:
while (($key, $value) = each %hash) {
print "$key = $value\n";
}
eof DATEIHANDLE
eof ()
eof
Die eof
-Funktion liefert 1 zurück, wenn beim nächsten Lesen aus DATEIHANDLE
die
Dateiendemarke zurückgeliefert wird oder DATEIHANDLE
nicht geöffnet ist. Ohne
Argument wertet eof
die zuletzt gelesene Datei aus. Erfolgt der Aufruf mit leeren
Klammern als Argument, erkennt eof
das Ende einer Pseudodatei, die aus all den
Dateien besteht, die auf der Befehlszeile angegeben wurden. In der perlfunc-
Manpage wird klugerweise darauf hingewiesen, dass eof
selten verwendet wird, da
Perl automatisch den undefinierten Wert zurückliefert, wenn das Ende einer Datei
erreicht ist - so dass das Dateiende auch bequem ohne diese Funktion entdeckt
werden kann.
eval AUSDRUCK
eval
wird verwendet, um einen Ausdruck oder einen Codeblock auszuführen, als ob
es sich um ein eigenständiges Perl-Programm handelte. Es wird im Kontext des
gerade laufenden Perl-Programms ausgeführt, so dass alle Variablen und anderen
persis-tenten Werte des übergeordneten Programms weiter definiert sind, wenn die
Ausführung des Ausdrucks mit eval
beendet ist.
Der von eval
zurückgelieferte Wert ist der Wert des zuletzt ausgewerteten Ausdrucks.
Um explizit einen bestimmten Wert zurückzuliefern, können Sie innerhalb von eval
eine return
-Anweisung verwenden. Wenn innerhalb der eval
-Anweisung ein Syntax-
oder ein Laufzeitfehler auftritt oder eine die
-Anweisung ausgeführt wird, liefert die
eval
-Anweisung einen undefinierten Wert zurück, und die Variablen $@
enthält die
Fehlermeldung.
Da fatale Fehler, die innerhalb von eval
-Anweisungen auftreten, die Ausführung des
übergeordneten Programms nicht anhalten, kann die Funktion genutzt werden, um
Fehler abzufangen oder schwer kalkulierbaren Code auszutesten.
exec LISTE
Die exec
-Funktion führt einen Systembefehl aus und hat keinen Rückgabewert, es sei
denn der Befehl existiert nicht. Wenn LISTE
aus mehr als einem Element besteht,
verwendet exec
den Systemaufruf execvp(3)
mit den Argumenten in LISTE
. Wenn
das Argument aus einem einzigen skalaren Wert besteht, wird das Argument auf
Shell-Metazeichen geprüft. Wenn Shell-Metazeichen gefunden werden, wird das
Argument durch /bin/sh -c
ausgeführt; andernfalls wird das Argument in Wörter
zerlegt und an execvp
übergeben.
exists AUSDRUCK
Die exists
-Funktion wird verwendet, um zu prüfen, ob ein bestimmter Schlüssel in
einem Hash definiert ist. exists
prüft nicht, ob es zu dem Schlüssel auch einen Wert
gibt; es wird ausschließlich zum Prüfen auf Schlüssel verwendet. Sehen Sie zur
Veranschaulichung ein Beispiel:
if (exists $hash{$key}) { print "Ja."; }
else { print "Nein.\n"; }
exit AUSDRUCK
Die exit
-Funktion wertet AUSDRUCK aus und bricht das Programm sofort ab.
Normalerweise ist die
die sauberere Lösung, um die Ausführung eines Programms
abzubrechen, da die zurückgelieferten Fehlerinformationen abgefangen werden
können.
exp AUSDRUCK
Liefert den Wert e
hoch AUSDRUCK
zurück. Wenn exp
ohne AUSDRUCK
aufgerufen wird,
wird standardmäßig exp($)
. Für normale Exponenten verwenden Sie den Operator
**
.
fcntl DATEIHANDLE, FUNKTION, SKALAR
Wird verwendet, um den Systemaufruf fcntl(2)
zu emulieren. Mit use fcntl;
erhalten Sie die Funktionsdefinitionen, die Sie benötigen, um diese Funktion zu
nutzen. In der Manpage finden Sie weitere Informationen zu der Funktion. fcntl
liefert einen fatalen Fehler zurück, wenn sie auf der Plattform, auf der sie ausgeführt
wird, nicht implementiert ist.
fileno DATEIHANDLE
fileno
liefert einen Dateideskriptor für einen gegebenen Datei-Handle zurück. Ein
Dateideskriptor ist ein kleiner Integerwert, der die Datei identifiziert. Er kann für die
Konstruktion von Bitmaps für die Verwendung mit select
genutzt werden. Wenn
DATEIHANDLE
nicht geöffnet ist, wird undefined
zurückgeliefert.
flock DATEIHANDLE, OPERATION
Diese Funktion ruft den Systembefehl flock(2)
für DATEIHANDLE
auf. Weitere
Informationen zu den verfügbaren Operationen finden Sie in der Manpage zu
flock(2)
. Auf Systemen, die flock(2)
oder Mechanismen zum Sperren von Dateien
nicht unterstützen, erhalten Sie einen fatalen Fehler.
fork
fork
wird verwendet, um einen Systemaufruf in einen getrennten Prozeß zu
verzweigen. fork
liefert die Kind-PID an den übergeordneten Prozeß zurück. Diese
Funktion ist nur auf Unix-ähnlichen Plattformen implementiert. Der gesamte Code in
dem Block wird in einem neuen Prozeß ausgeführt.
format
Die format
-Funktion wurde entworfen, um COBOL-Programmierern das Erlernen
von Perl zu erleichtern. Genau genommen bietet es Ihnen eine Methode, um
Schablonen für die formatierte Ausgabe zu erzeugen. In der perlform-Manpage
können Sie detailliert nachlesen, wie Sie mit format
eine Ausgabe erzeugen.
formline BILD, LISTE
Die Funktion formline
wird intern von den Formaten verwendet. Sie wird verwendet,
um das Argument LISTE
analog zu BILD
zu formatieren. Weitere Informationen
entnehmen Sie bitte der Manpage perlform.
getc DATEIHANDLE
getc
liefert das nächste Zeichen aus DATEIHANDLE
zurück. Wird das Argument
DATEIHANDLE
weggelassen, liefert getc
das nächste Zeichen aus STDIN
. getc
erlaubt
keine ungepufferte Eingabe (mit anderen Worten, wenn STDIN
die Konsole ist, dann
erhält getc
das Zeichen erst, wenn der Puffer mit einem Neue-Zeile-Zeichen geleert
wurde).
getlogin
Liefert die aktuelle Login-Information aus /etc/utmp
zurück, falls vorhanden. Falls
der Wert Null
lautet, sollten Sie getpwuid()
verwenden.
getpeername SOCKET
getpeername
liefert die gepackte sockaddr
-Adresse des anderen Endes der SOCKET
-
Verbindung zurück.
getpgrp PID
getpgrp
liefert die Prozeßgruppe für den spezifizierten Prozeß zurück. Wird als PID 0
angegeben, wird die Prozeßgruppe des aktuellen Prozesses zurückgeliefert.
getppid
getppid
liefert die Prozess-ID für den Elternprozeß des aktuellen Prozesses zurück.
getpriority WELCHE, WER
Unter der Voraussetzung, dass getpriority
auf Ihrem System implementiert ist,
liefert diese Funktion die Priorität für einen Prozeß, eine Prozeßgruppe oder einen
Benutzer zurück.
getsockname SOCKET
getsockname
liefert die gepackte sockaddr
-Adresse dieses Endes der SOCKET
-
Verbindung zurück.
getsockopt SOCKET, LEVEL, OPTNAME
getsockopt
liefert die angeforderte Option zurück oder im Falle eines Fehlers undefined
.
glob AUSDRUCK
Die glob
-Funktion liefert den Wert von AUSDRUCK mit Dateinamenerweiterungen
zurück, wie sie auch unter einer Shell vorkommen könnten. Wird AUSDRUCK
weggelassen, wird als Argument $_
verwendet.
gmtime AUSDRUCK
gmtime
konvertiert eine Zeitangabe in dem von der time
-Funktion zurückgelieferten
Zeitformat (Sekunden seit 1. Jan. 1970, 00:00) in die Greenwich-Standardzeit (auch
bekannt als Greenwich Mean Time). Diese Zeitangabe wird als eine Liste mit neun
Elementen zurückgeliefert. Die Inhalte der Elemente können Sie diesem Beispiel
entnehmen:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
Beachten Sie, dass alle diese Elemente im numerischen Format zurückgegeben
werden und die aufeinanderfolgenden Zahlen (wie Monate und Tage der Woche) statt
mit einer 1 mit einer 0 beginnen. Das bedeutet, dass Monate von 0 bis 11 zählen. Das
zurückgelieferte Jahr ist die Zahl des Jahres seit 1900 und nicht einfach nur die letzten
zwei Stellen. Damit wird das so gefürchtete Jahr-2000-Problem vermieden. Wenn Sie
gmtime
in einem skalaren Kontext verwenden, liefert die Funktion die Zeit im
ctime(3)
-Format zurück:
Sat Jun 6 01:56:44 1998
goto LABEL
goto AUSDRUCK
goto &NAME
Die goto
-Funktion sucht die mit LABEL
benannte Anweisung und fährt ab dort mit der
Ausführung fort. Sie kann die Ausführung nicht mit Anweisungen fortsetzen, die sich
in Blocks befinden und initialisiert werden müssen (zum Beispiel Subroutinen oder
foreach
-Schleifen). Es gibt noch zwei weitere Anwendungsbereiche für goto
, die
jedoch ziemlich veraltet sind. goto
AUSDRUCK
wird verwendet, um zu einer Marke
(Label) zu springen, die mit AUSDRUCK
angegeben wird, wobei der Gültigkeitsbereich
dynamisch ist. goto &NAME
ersetzt die aktuell laufende Subroutine durch einen Aufruf
der benannten Subroutine, als ob diese zuerst aufgerufen worden wäre.
grep AUSDRUCK, LISTE
grep BLOCK LISTE
Die grep
-Funktion dient dazu, Listen zu durchsuchen und alle Elemente in der Liste
zurückzuliefern, die einem bestimmten Muster entsprechen. grep
übernimmt zwei
Argumente: einen Ausdruck und eine Liste. Es liefert eine neue Liste zurück, die all
die Elemente enthält, für den der Ausdruck wahr ist. Betrachten wir ein Beispiel:
@neuesarray = grep /rot/, @altesarray;
@neuesarray
enthält in diesem Beispiel eine Liste der Elemente aus @altesarray
, die
den String rot
enthalten. Wenn Sie grep
in einem skalaren Kontext aufrufen, wird statt
der Liste der Elemente die Anzahl der übereinstimmenden Elemente zurückgeliefert.
hex AUSDRUCK
hex
liest AUSDRUCK
als einen hexadezimalen String und liefert den Dezimalwert zurück.
Wird AUSDRUCK
fortgelassen, liest die Funktion $_
.
import KLASSENNAME LISTE
import KLASSENNAME
import
ist keine vordefinierte Funktion. Sie wird vielmehr von Modulen
implementiert, die Namen in andere Module exportieren wollen. Die import
-Funktion
wird von der use
-Funktion aufgerufen, wenn ein Modul in ein Perl-Programm geladen
wird.
index STR, SUBSTR, POSITION
index STR, SUBSTR
index
wird verwendet, um einen Teilstring in einem größeren String zu lokalisieren.
Die Funktion übernimmt drei Argumente, von denen eines optional ist. Bei den
Argumenten handelt es sich um den String, der durchsucht werden soll, den
gesuchten Teilstring und die Position, ab der die Suche beginnen soll (optional). index
liefert die Position im String zurück, an der der Teilstring das erste Mal beginnt. Um
zum Beispiel den String bar
in dem größeren String verwundbar
zu finden, könnten
Sie den folgenden Code verwenden: index ('verwundbar', 'bar');
. Um das zweite
Vorkommen von sein
in dem String Sein oder Nichtsein
zu suchen, könnten Sie
optional das dritte Argument verwenden, um die Suche bei Position 4 zu starten:
index ('Sein oder Nichtsein
', 'sein', 4);
.
int AUSDRUCK
int
liefert den Integeranteil eines Strings zurück. Wenn beispielsweise ein String mit
einem Integer beginnt, wie 60 kmh
, wird int
diesen Integer, in unserem Beispiel 60
,
zurückliefern. Strings, die nicht mit einem Integer beginnen, liefern 0 zurück. Wenn
Sie die Perl-Warnungen aktiviert haben, erhalten Sie für jeden String, der nicht mit
einer Zahl beginnt, eine Warnung.
ioctl DATEIHANDLE, FUNKTION, SKALAR
ioctl
wird dazu verwendet, den Systemaufruf ioctl(2)
zu implementieren. Sie
werden wahrscheinlich
require "ioctl.ph";
aufrufen müssen, bevor Sie die Funktionsdefinitionen für ioctl
importieren können.
Wenn die Funktion nicht existiert, werden Sie auf der Basis der Systemdatei ioctl.h
Ihre eigenen Funktionsdefinitionen erzeugen müssen.
join AUSDRUCK, LISTE
Die join
-Funktion ist das Gegenstück zu split
. Sie wird benötigt, um die Elemente
einer Liste in einem einzigen String zusammenzufassen. Sie übernimmt zwei
Argumente: einen Ausdruck und eine Liste. Der Inhalt des Ausdrucks wird als
Begrenzer zwischen den Elementen im zurückgelieferten String verwendet.
keys HASH
Die keys
-Funktion liefert ein Array zurück, das alle Schlüssel des in HASH
angegebenen
Hash enthält. Diese Funktion wird häufig verwendet, um die Schlüssel in einem Hash
zu sortieren, bevor man eine Schleife darüber laufen läßt. Hier ein typisches Beispiel:
foreach $key (sort (keys %hash)) {
print $key, " = ", $value, "\n";
}
kill LISTE
kill
dient eigentlich dazu, ein Signal an eine Liste von Prozessen zu senden, anstatt
diese einfach abzuwürgen. Das erste Argument in LISTE
muss das zu sendende Signal
sein, der Rest sollten die Prozesse sein, die das Signal erhalten sollen. Um Prozesse zu
beenden, würden Sie folgenden Code verwenden:
kill 1, 100, 102, 110;
Um die gleichen Prozesse mit größerer Entschlossenheit zu beenden, würden Sie schreiben:
kill 9, 100, 102, 110;
Sie können anstatt einer Signalzahl auch den Signalnamen angeben, der dann
allerdings in Anführungszeichen stehen muss. Weitere Informationen zu den Signalen
finden Sie in der Manpage signal(5)
.
last LABEL
last
Der last
-Befehl veranlaßt das direkte Verlassen der in LABEL
angegebenen Schleife.
Wird kein Wert für LABEL
angegeben, wird die innerste Schleife verlassen.
lc AUSDRUCK
Die lc
-Funktion konvertiert alle alphabetischen Zeichen in einem String in
Kleinbuchstaben. lc 'ABC';
liefert demnach abc
zurück. Wird kein AUSDRUCK
angegeben, wird die lc
-Funktion auf $_
angewendet.
lcfirst AUSDRUCK
Liefert den Wert in AUSDRUCK
zurück, nachdem das erste Zeichen in einen
Kleinbuchstaben verwandelt wurde. Wird kein AUSDRUCK
angegeben, wird die Funktion
auf $_
angewendet.
length AUSDRUCK
length
übernimmt einen String als Argument und liefert einen Integer zurück, der die
Länge des Strings in Bytes angibt. So liefert zum Beispiel length("Hund")
den Wert 4
zurück. Wenn AUSDRUCK
nicht angegeben wird, wird die Funktion $_
angewendet.
link ALTEDATEI, NEUEDATEI
Erzeugt einen harten (anstelle eines symbolischen) Links von ALTEDATEI
zu NEUEDATEI
.
Zur Erzeugung eines symbolischen Links müssen Sie sich der Funktion symlink
bedienen.
listen SOCKET, WARTESCHLANGENGROESSE
Die listen
-Funktion in Perl erfüllt die gleiche Funktion wie der Systemaufruf listen
.
Sie liefert im Erfolgsfall wahr zurück und ansonsten falsch.
local AUSDRUCK
local
gibt an, dass die aufgelisteten Variablen lokal zu dem gerade ausgeführten
Block, der Schleife, Subroutine, eval {}
oder do
sind. Wenn man local
mehr als eine
Variable übergeben möchte, sollte man diese in Klammern setzen. Um den
Gültigkeitsbereich einer Variablen zu begrenzen, ist es meist besser, my
zu verwenden.
localtime AUSDRUCK
Die Funktion localtime
ist identisch mit der Funktion gmtime
, nur dass sie die Zeit in
die lokale Zeitzone und nicht in die Greenwich-Zeit konvertiert.
log AUSDRUCK
Liefert den Logarithmus (Basis e) von AUSDRUCK
oder von $_
, wenn AUSDRUCK
nicht
angegeben wird.
lstat DATEIHANDLE
lstat AUSDRUCK
lstat
lstat
entspricht der Funktion stat
, bis auf die Tatsache, dass sie statistische
Informationen für einen symbolischen Link und nicht für die Datei, auf die der Link
verweist, zurückliefert. Wenn AUSDRUCK
weggelassen wird, wird lstat
auf den Wert in
$_
angewendet.
map BLOCK LISTE
map AUSDRUCK, LISTE
map
stellt eine Alternative zu foreach
dar, wenn es darum geht, eine Operation auf
jedes Element in einer Liste auszuführen. Die Funktion kann in zwei Formen
aufgerufen werden. Der folgende Code demonstriert, wie Sie alle Operationen in
einem Codeblock auf eine Liste anwenden können:
@rueckwaerts_worte = map {
lc;
reverse;
} @worte;
Das obige Beispiel dreht alle Elemente in dem Array @worte
um und konvertiert sie in
Kleinbuchstaben. Die Ergebnisse von map
werden in einem Listenkontext
zurückgegeben, weshalb ich sie einem Array zuweise. Beachten Sie, dass jedes
Element zur Bearbeitung der Variablen $_
zugewiesen wird. Das ist der Grund, warum
ich die Funktionen im Codeblock ohne Argumente verwenden kann. Um eine einzige
Operation auf jedes Element einer Liste durchzuführen, wird map
folgendermaßen
aufgerufen:
@neueliste = map(uc, @alteliste);
Auffällig ist, dass bei Anwendung einer einzelnen Operation die Operation mit Komma von der zu verarbeitenden Liste getrennt wird.
mkdir DATEINAME, MODUS
mkdir
wird verwendet, um ein neues Verzeichnis anzulegen, dessen Name in
DATEINAME
angegeben wird. Sie sollten die Zugriffsrechte für das Verzeichnis mit
MODUS
setzen. MODUS
sollte im üblichen Oktalformat angegeben werden (eine reine
Zahl, nicht von Anführungszeichen umschlossen) und das SUID-Bit enthalten.
msgctl ID, CMD, ARG
msgctl
ruft den Systemaufruf msgctl(2)
auf. Diese Funktion ist nur auf Maschinen
verfügbar, die das System V IPC unterstützen.
msgget SCHLÜSSEL, FLAGS
Ruft die System V IPC-Funktion msgget
auf und liefert die ID der
Nachrichtenwarteschlange oder im Falle eines Fehlers undefined
zurück.
msgrcv ID, VAR, GROESSE, TYP, FLAGS
Ruft die System V IPC-Funktion msgrcv
auf, um eine Nachricht von der
Nachrichtenwarteschlange ID zu empfangen, die in der Variablen VAR
gespeichert
wird, mit einer maximalen Größe von GROESSE
. Liefert im Erfolgsfall wahr zurück oder
im Falle eines Fehlers falsch.
msgsnd ID, MLD, FLAGS
Ruft die System V IPC-Funktion msgsnd
auf, um MLD
an die
Nachrichtenwarteschlange, die durch ID
spezifiziert ist, zu senden. Liefert im
Erfolgsfall wahr zurück oder im Falle eines Fehlers falsch.
my AUSDRUCK
my
wird verwendet, um die aufgelisteten Variablen einem Gültigkeitsbereich
zuzuordnen, der lokal zu dem aktuellen Block, zu eval{}
, zur Subroutine oder zur
importierten Datei ist. Wird mehr als eine Variable angegeben, müssen die Variablen
in Klammern stehen.
next LABEL
next
Wenn das Programm in einer Schleife auf den Befehl next
stößt, springt die
Programmausführung direkt zum nächsten Schleifendurchlauf.
no MODULE LISTE
Das no
-Modul ist das Gegenstück zu dem use
-Operator. Ausführlichere Informationen
dazu finden Sie in der perlobj-Manpage.
oct AUSDRUCK
oct
liest AUSDRUCK
als einen oktalen String ein und liefert den zugehörigen
Dezimalwert zurück, es sei denn der String beginnt mit 0x
, was bedeutet, dass der
String als Hexadezimalwert interpretiert wird. Wird AUSDRUCK
weggelassen, liest die
Funktion $_
ein.
open (DATEIHANDLE, AUSDRUCK)
Die open
-Funktion öffnet die Datei, die in AUSDRUCK
spezifiziert wird, und weist sie
DATEIHANDLE
zu. Wenn AUSDRUCK
weggelassen wird, wird angenommen, dass eine
Variable mit dem gleichen Namen wie DATEIHANDLE
den Namen der zu öffnenden
Datei enthält.
Indem Sie <
vor den Dateinamen setzen, können Sie die Datei für die Eingabe öffnen,
und indem Sie ein >
davorsetzen, öffnen Sie die Datei für die Ausgabe. Um Daten an
die Ausgabedatei anzuhängen, anstatt sie zu überschreiben, müssen Sie zwei >>
-
Zeichen vor den Dateinamen setzen. Um einen Datei-Handle mit einer Pipe anstatt
der Standardeingabe oder -ausgabe zu öffnen, können Sie das Pipe-Zeichen (|
)
verwenden. Wenn Sie das |
-Zeichen vor den Programmnamen setzen, öffnen Sie
eine Pipe zu dem Programm, und wenn Sie das |
nach dem Dateinamen setzen,
öffnen Sie eine Pipe von dem Programm zu Ihrem Datei-Handle.
Weitere Informationen zu der open
-Funktion finden Sie in Kapitel 15, »Dateien und
E/A«.
opendir (VERZEICHNISHANDLE, AUSDRUCK)
Die Funktion opendir
öffnet das in AUSDRUCK
spezifizierte Verzeichnis für die Eingabe
und weist es VERZEICHNIS
HANDLE
zu. Aus dem Verzeichnis-Handle kann dann die Liste
der Einträge in dem Verzeichnis gelesen werden. Beachten Sie, dass sich der
Namensbereich für Verzeichnis-Handles nicht mit dem von Datei-Handles
überschneidet.
ord AUSDRUCK
Liefert den numerischen ASCII-Wert des ersten Zeichens von AUSDRUCK
zurück. Wenn
AUSDRUCK
nicht angegeben wird, wird $_
verwendet.
pack SCHABLONE, LISTE
pack
übernimmt eine Liste von Werten, packt sie in eine binäre Struktur und liefert
den String zurück, der diese Struktur enthält. SCHABLONE
ist eine Liste von Zeichen, die
die Reihenfolge und den Typ der Werte vorgibt.
Tabelle A.1: Schablonensymbole für pack
Jeder Buchstabe kann von einer Zahl gefolgt sein, die angibt, wie oft der Buchstabe
wiederholt werden soll. Mit der Funktion unpack
können Elemente wieder aus einer
binären Struktur extrahiert werden.
package NAMENSBEREICH
Die package
-Funktion legt fest, dass alle Variablen in dem innersten Block,
Subroutine, eval
oder Datei, zu NAMENSBEREICH
gehören. Weitere Informationen
finden Sie in der perlmod-Manpage.
pipe LESEHANDLE, SCHREIBHANDLE
pipe
öffnet eine Pipe von LESE
HANDLE
zu SCHREIB
HANDLE
, wie der Systemaufruf des
gleichen Namens.
pop ARRAY
Die pop
-Funktion entfernt das letzte Element in einem Array (verkürzt es um ein
Element) und liefert es als skalaren Wert zurück. push
(wird gleich besprochen) und
pop
sind sogenannte Stack- oder Stapel-Funktionen. Wenn Sie sich ein Array als
einen Stapel Tabletts in einer Cafeteria vorstellen, wird mit pop
das oberste Tablett
vom Stapel entfernt.
pos SKALAR
Liefert die Position in SKALAR
zurück, an der die letzte m//g
-Suche abgebrochen
wurde. Wenn SKALAR
nicht angegeben wird, wird $_
verwendet.
print DATEIHANDLE LISTE
print LISTE
Die print
-Funktion wird dazu verwendet, die ihr im Listenkontext übergebenen Daten
der Standardausgabe oder, wenn ein Datei-Handle spezifiziert wurde, diesem Datei-
Handle zu übergeben. Wird keine Liste von auszugebenden Daten angegeben, wird
standardmäßig der Inhalt von $_
ausgegeben. Beachten Sie, dass zwischen dem Datei-
Handle und der Liste der auszugebenden Daten kein Komma stehen sollte. Um zum
Beispiel einige Daten an das Datei-Handle DATEI
auszugeben, würden Sie schreiben:
print DATEI $daten
print DATEI $daten, ' ', $mehr_daten, '\n';
printf DATEIHANDLE LISTE
printf LISTE
printf
wird verwendet, um die Ausgabe nach den Konventionen der sprintf
-
Funktion zu formatieren. Im wesentlichen ist
printf DATEIHANDLE FORMAT, LISTE;
print DATEIHANDLE sprintf(FORMAT, LISTE);
push ARRAY, LISTE
push
wird verwendet, um ein Element an das Ende eines Arrays anzuhängen. Wenn
Sie einen skalaren Wert in das Array »pushen«, wird das Array dadurch um ein
Element länger, und der Wert wird dem letzten Element im Array zugewiesen. Stellen
Sie sich den gleichen Stapel Tabletts aus unserem Beispiel zur pop
-Funktion vor: In
diesem Fall bewirkt die push
-Funktion, dass ein Tablett oben auf den Stapel
draufgelegt wird. Sie können auch mehrere Werte an ein Array anhängen, Sie
müssen nur eine Liste als Argument für die push
-Funktion angeben.
quotemeta AUSDRUCK
quotemeta
quotemeta
liefert den Wert von AUSDRUCK
zurück, wobei alle nichtalphanumerischen
Zeichen mit Escape-Zeichen (Backslash) versehen sind. Verwendet $_
, wenn AUSDRUCK
weggelassen wurde.
rand AUSDRUCK
rand
Die rand
-Funktion liefert eine Zufallszahl zwischen 0 und AUSDRUCK
. Wenn AUSDRUCK
weggelassen wird, liefert die Funktion einen Wert zwischen 0 und 1 (1 nicht
eingeschlossen). Unter srand
erfahren Sie, wie Sie den Zufallszahlengenerator
initialisieren.
read DATEIHANDLE, SKALAR, LAENGE, OFFSET
read DATEIHANDLE, SKALAR, LAENGE
Die read
-Funktion wird verwendet, um eine beliebige Anzahl an Daten-Bytes von
einem Datei-Handle in einen skalaren Wert zu lesen. Sie übernimmt vier Argumente:
Datei-Handle, Skalar, Länge und Offset (Offset ist optional). Das Argument
DATEIHANDLE
gibt an, von welchem Datei-Handle die Daten zu lesen sind. Das
Argument SKALAR
definiert die Variable, der die Daten zugewiesen werden. LAENGE
gibt an, wie viele Daten-Bytes gelesen werden, und OFFSET
wird verwendet, wenn Sie
die Daten nicht von Beginn des Strings an einlesen wollen, sondern erst ab einer
späteren Position. Sehen Sie im folgenden ein Beispiel, das 1024 Byte vom 2048ten
Byte an aus dem Datei-Handle DATEI
einliest und der Variablen $chunk
zuweist:
read DATEI, $chunk, 1024, 2048;
readdir VERZEICHNISHANDLE
readdir
wird verwendet, um Einträge aus einem Verzeichnis zu lesen, das mit
opendir
geöffnet wurde. Wenn diese Funktion in einem skalaren Kontext verwendet
wird, liefert sie den nächsten Eintrag in dem Verzeichnis zurück. In einem
Listenkontext liefert sie alle übriggebliebenen Einträge im Verzeichnis. Wenn bereits
alle Einträge in dem Verzeichnis gelesen wurden, lautet der Rückgabewert undefined
.
readlink AUSDRUCK
Die readlink
-Funktion liest den Wert eines symbolischen Links. Wenn auf der
Plattform symbolische Links nicht implementiert sind, wird ein fataler Fehler
zurückgeliefert. Wenn AUSDRUCK
fortgelassen wird, wird der Wert in $_
verwendet.
recv SOCKET, SKALAR, LAENGE, FLAGS
recv
wird verwendet, um eine Nachricht auf einem Socket zu empfangen, wobei man
sich der C-Funktion recvfrom
bedient. Die Funktion empfängt LAENGE
Bytes in der
Variablen SKALAR
von SOCKET
. Dabei wird die Adresse des Absenders zurückgeliefert,
es sei denn es liegt ein Fehler vor, in welchem Falle undefined
zurückgeliefert wird.
recv
übernimmt die gleichen Flags wie der gleichlautende Systemaufruf.
redo LABEL
redo
redo
startet den aktuellen Schleifenblock neu, ohne die Testbedingung der Schleife
neu zu bewerten. Wenn LABEL
nicht angegeben wird, wirkt redo
auf den innersten
Block.
ref AUSDRUCK
ref
liefert wahr zurück, wenn AUSDRUCK
eine Referenz ist, im anderen Falle falsch.
Wird AUSDRUCK
nicht angegeben, wird $_
verwendet.
rename ALTERNAME, NEUERNAME
Die rename
-Funktion ändert den Namen der Datei ALTERNAME
in NEUERNAME
.
require AUSDRUCK
Die Funktion require
wird meist dazu verwendet, eine externe Perl-Datei in das
aktuelle Programm zu laden. Allgemein wird sie verwendet, um eine Art von
Abhängigkeit von ihrem Argument zu schaffen. Wenn AUSDRUCK
numerisch ist, wird
die entsprechende Perl-Version für die Ausführung des Programms benötigt. Wenn
kein Argument angegeben wird, wird $_
verwendet.
Um eine Datei zu laden, sollten Sie den Dateinamen als Argument zu require
übergeben. Erfolgt die Übergabe des Dateinamens als einfaches Wort, wird
automatisch .pl
angehängt und ::
durch /
ersetzt, damit Standardmodule möglichst
problemlos geladen werden können. Die benötigte Datei muss mit einer Anweisung
enden, die als wahr ausgewertet wird. In der Regel enden Dateien, die für die
Verwendung mit require
erstellt werden, daher mit einer 1;
-Anweisung.
reset AUSDRUCK
reset
reset
wird verwendet, um globale Variablen oder ??
-Suchläufe zurückzusetzen, und
steht häufig am Anfang einer Schleife oder in dem continue
-Block am Ende einer
Schleife. reset
löscht die Werte aller Variablen, die mit den Zeichen aus AUSDRUCK
beginnen. Wenn kein Argument angegeben wird, löscht reset
alle ??
-Suchläufe.
return AUSDRUCK
Die return
-Funktion unterbricht die Ausführung von eval
, einer Subroutine oder
einer do
-Datei und liefert den Wert von AUSDRUCK
zurück. Wenn keine return
-
Anweisung vorgesehen wird, wird der Wert des zuletzt ausgewerteten Ausdrucks
zurückgeliefert.
reverse LISTE
Die reverse
-Funktion übernimmt einen skalaren Wert oder eine Liste als Argument.
Im Falle eines skalaren Werts wird die Reihenfolge der Zeichen in dem Skalar
umgedreht. So erzeugt zum Beispiel der Code reverse "rot";
den Rückgabewert
tor
. Wenn reverse
eine Liste übergeben wird, so wird die Reihenfolge der Elemente
in der Liste umgedreht. reverse ("rot", "gruen", "blau");
hat den Rückgabewert
("blau", "gruen", "rot")
.
rewinddir VERZEICHNISHANDLE
rewinddir
setzt das Verzeichnis-Handle für ein mit readdir
geöffnetes Verzeichnis
zurück auf den ersten Eintrag in diesem Verzeichnis.
rmdir DATEINAME
rmdir
entfernt das in DATEINAME
spezifizierte Verzeichnis, wenn es leer ist. Ist das
Verzeichnis nicht leer oder die Funktion versagt aus einem anderen Grund, liefert sie 1
zurück. Im Erfolgsfall lautet der Rückgabewert 0
. Wenn DATEINAME
nicht angegeben
wird, wird der Wert in $_
verwendet.
scalar AUSDRUCK
Erzwingt, dass der Wert in AUSDRUCK
in einem skalaren Kontext ausgewertet wird, und
liefert den Wert von AUSDRUCK
zurück.
seek DATEIHANDLE, OFFSET, VONWOAUS
seek
wird verwendet, um die Position von DATEIHANDLE
zu setzen. VONWOAUS
kann einen
der folgenden Werte annehmen: 0, um die Position auf POSITION
zu setzen, 1, um
POSITION
zu der aktuellen Position hinzuzuaddieren, und 2, um die Position auf EOF
plus POSITION
zu setzen (aus offensichtlichen Gründen üblicherweise eine negative
Zahl).
seekdir VERZEICHNISHANDLE, POS
seekdir
setzt die Position von VERZEICHNISHANDLE
für die readdir
-Funktion. POS
muss ein Wert sein, der von telldir
zurückgegeben wurde.
select DATEIHANDLE
select
Wenn der Aufruf ohne Argumente erfolgt, liefert select
das gerade ausgewählte
Datei-Handle zurück. Wenn Sie select
ein Datei-Handle übergeben (oder einen
Ausdruck, der einen Datei-Handle zurückliefert), wird dieser Datei-Handle zum
Standard-Handle, an den alle Ausgaben gesendet werden. Mit anderen Worten: der
Datei-Handle wird zur Standardausgabe. Wenn Sie also eine Reihe von Elementen in
einem bestimmten Datei-Handle ausgeben wollen, ist es vielleicht einfacher, das
Datei-Handle mit select
einzurichten und dafür die Datei-Handle in den print
-
Anweisungen einzusparen.
semctl ID, SEMNUM, CMD, ARG
semctl
ruft den System V IPC-Systemaufruf semctl(2)
auf.
semget SCHLÜSSEL, NSEMS, GROESSE, FLAGS
semget
ruft den System-V-IPC-Systemaufruf semget(2)
auf und liefert die Semaphore-
ID zurück oder im Falle eines Fehlers undefined
.
semop KEY, OPSTRING
Diese Funktion ruft den System-V-IPC-Systemaufruf semop(2)
auf, der Semaphore-
Operationen wie Signalisieren und Warten ausführt.
send SOCKET, MLDNG, FLAGS, ZU
send SOCKET, MLDNG, FLAGS
Die send
-Funktion sendet eine Nachricht über ein Socket. Wenn das Socket nicht
verbunden ist, müssen Sie eine Adresse angeben, an die gesendet werden soll. Die
Funktion übernimmt die gleichen Flags wie der Systemaufruf send
und liefert die
Anzahl der gesendeten Zeichen zurück, wenn sie erfolgreich ist (oder undefined
,
wenn ein Fehler aufgetreten ist).
setpgrp PID, PGRP
setpgrp
setzt die Prozeßgruppe für die spezifizierte PID. Wenn als PID 0 angegeben
wird, wird die Prozeßgruppe auf den aktuellen Prozeß gesetzt. Wenn setpgrp(2)
nicht
vom System unterstützt wird, wird ein fataler Fehler produziert.
setpriority WELCHE, WER, PRIORITÄT
Setzt die Priorität für einen Prozeß, eine Prozeßgruppe oder einen Benutzer. Wenn
setpriority(2)
nicht unterstützt wird, führt dies zu einem fatalen Fehler.
setsockopt SOCKET, LEVEL, OPTNAME, OPTWERT
setsockopt
wird verwendet, um die spezifizierte Option für ein Socket zu setzen. Bei
Auftreten eines Fehlers wird undefined
zurückgeliefert. Verwenden Sie undef
für
OPTWERT
, um eine Option zu setzen, ohne einen Wert für diese Option anzugeben.
shift ARRAY
shift
Die unshift
-Funktion ist das Gegenstück zu der shift
-Funktion. Sie entfernt das erste
Element aus einem Array und liefert es als skalaren Wert zurück. Die Indizes der
anderen Elemente im Array werden um eins dekrementiert, und das Array ist
anschließend um ein Element kürzer als vorher. unshift
wird in der Regel dazu
verwendet, Argumente zu verarbeiten, die einer benutzerdefinierten Funktion
übergeben wurden. Wie Sie wissen, werden Argumente mittels des Arrays @_
an
Funktionen übergeben. Mit Befehlen wie $arg = unshift @_;
können sie
Funktionsargumente verarbeiten, ohne Gedanken an ihre Indizes verschwenden zu
müssen.
shmctl ID, CMD, ARG
shmctl
ruft den System-V-Systemaufruf shmctl(2)
auf.
shmget SCHLUESSEL, GROESSE, FLAGS
shmget
ruft den System-V-Systemaufruf shmget(2)
auf.
shmread ID, VAR, POS, GROESSE
shmread
ruft den System-V-Systemaufruf shmread(2)
auf.
shmwrite ID, STRING, POS, GROESSE
shmwrite
ruft den System-V-Systemaufruf shmwrite(2)
auf.
shutdown SOCKET, WIE
shutdown
schließt eine Socket-Verbindung. Dabei wird die Art des Schließens in WIE
vorgegeben, dass der Syntax des Systemaufrufs shutdown
entspricht.
sin AUSDRUCK
Liefert den Sinus von AUSDRUCK
oder von $_
, wenn kein Argument übergeben wird.
sleep AUSDRUCK
sleep
sleep
versetzt das Programm in einen Schlaf - für die in AUSDRUCK
definierten
Sekunden oder, falls kein Argument übergeben wird, für unbegrenzte Zeit. sleep
kann
mit dem SIGALRM
-Signal unterbrochen werden. Die Funktion liefert die Anzahl der
tatsächlich geschlafenen Sekunden zurück.
socket SOCKET, DOMÄNE, TYP, PROTOKOL
Die socket
-Funktion wird dazu verwendet, das Socket zu öffnen, das mit dem Datei-
Handle SOCKET
verbunden ist. DOMÄNE
, TYP
und PROTOKOL
werden auf die gleiche Weise
spezifiziert wie im socket
-Systemaufruf. Sie sollten mit use Socket;
das gleichnamige
Modul importieren, bevor Sie die socket
-Funktion aufrufen, um sicherzustellen, dass
die korrekten Definitionen importiert sind.
socketpair SOCKET1, SOCKET2, DOMÄNE, TYP, PAAR
Die Funktion socketpair
erzeugt ein Paar unbenannter Sockets in der spezifizierten
Domäne und mit dem spezifizierten Typ. Wenn die Funktion nicht implementiert ist,
erfolgt ein fataler Fehler. Im Erfolgsfall liefert die Funktion wahr zurück.
sort SUBNAME LISTE
sort BLOCK LISTE
sort LISTE
Die sort
-Routine wird verwendet, um die Einträge einer Liste zu sortieren. Die
Elemente der Liste werden sortiert zurückgegeben. Es gibt drei verschiedene
Möglichkeiten, sort
anzuwenden. Die einfachste davon ist der Aufruf von sort
mit
der zu sortierenden Liste als einzigem Argument. Der Rückgabewert ist eine Liste, die
nach den Standardregeln für Stringvergleiche sortiert wurde.
Eine andere Möglichkeit besteht darin, eine Subroutine anzugeben, die die Elemente
in der Liste vergleicht. Diese Subroutine liefert einen Integer kleiner als, gleich oder
größer als Null zurück, je nachdem wie die Elemente in der Liste angeordnet werden
sollen (in diesen Subroutinen werden besonders oft der <=>
-Operator, der numerische
Vergleiche durchführt, und der cmp
-Operator, der für Stringvergleiche zuständig ist,
verwendet).
Mit der im vorigen Absatz beschriebenen Subroutinen-Methode können Sie Listen
nach anderen Kriterien als den standardmäßig vorgegebenen sortieren. Häufiger
jedoch fügt man einfach nur einen Codeblock als erstes Argument an den
Funktionsaufruf ein. Bestimmt ist Ihnen die sort
-Funktion schon einmal in der
folgenden Form begegnet:
@sortierteliste = sort { $a <=> $b } @liste;
Das obige Beispiel sortiert @liste
in aufsteigender numerischer Reihenfolge und weist
die zurückgelieferte Liste dem Array @sortierteliste
zu. Die von der sort
-Routine
verglichenen Elemente werden zum Sortieren als $a
und $b
an den Codeblock (oder
die Subroutine) gesendet. Der obige Codeblock vergleicht also die Elemente paarweise
mit Hilfe des <=>
-Operators. Betrachten wir noch ein paar weitere häufige
Codeblocks, die zusammen mit der sort
-Funktion verwendet werden:
# Sortiert in alphabetischer Reihenfolge (entspricht dem Standardverfahren)
@sortierteliste = sort {$a cmp $b } @liste;
# Sortiert in absteigender alphabetischer Reihenfolge
@sortierteliste = sort { $b cmp $a } @liste;
# Sortiert in numerischer Reihenfolge
@sortierteliste = sort { $a <=> $b } @liste;
# Sortiert in absteigender numerischer Reihenfolge
@ ortierteliste = sort { $b <=> $a } @liste;
splice ARRAY, OFFSET, LAENGE, LISTE
splice ARRAY, OFFSET, LAENGE
splice ARRAY, OFFSET
splice
ist das Schweizer Armeemesser unter den Array-Funktionen. Sie stellt eine
Universalfunktion dar, um Elemente in ein Array einzufügen, daraus zu entfernen oder
Elemente darin durch neue Werte zu ersetzen. splice
kann mit bis zu vier
Argumenten aufgerufen werden, von denen die letzten zwei optional sind. Das erste
Argument sollte das Array sein, das mit splice
bearbeitet werden soll. Das zweite
Argument ist der Offset, der die Position im Array angibt, an der die Aktion stattfindet
(wenn Sie vom hinteren Ende des Arrays abzählen wollen, geben Sie eine negative
Zahl an). Das dritte - optionale - Argument ist die Anzahl der Elemente, die entfernt
werden sollen (wenn Sie dieses Argument fortlassen, werden alle Elemente von dem
Offset bis zum Ende des Arrays entfernt). Der Rest der Argumente ist eine Liste von
Elementen, die am Offset eingefügt wird. Das alles ist etwas verwirrend, deshalb
möchte ich es anhand eines Beispiels veranschaulichen. Um alle Elemente eines
Arrays ab dem zweiten Element zu löschen (zur Erinnerung: Array-Indizes beginnen
mit einer 0), können Sie folgenden Code eingeben:
splice(@array, 2);
Um einen neuen skalaren Wert zwischen dem zweiten und dritten Element in ein Array einzufügen, ohne etwas zu entfernen, würden sie schreiben:
splice(@array, 2, 0, "neuer wert");
Um das zweite und dritte Element in einem Array durch drei neue Elemente zu ersetzen, würden Sie folgendes eingeben:
splice(@array, 2, 2, "rot", "gruen", "blau");
Sie sollten sich darüber im klaren sein, dass nach dem Aufruf von splice
für ein Array
die Elemente in dem Array neu indiziert werden, um die Änderungen in der Struktur
widerzuspiegeln. Demzufolge sind in unserem Beispiel oben alle Indizes für die
Elemente nach dem von uns eingefügten Element um eins inkrementiert, da wir zwei
Elemente durch drei ersetzt haben.
split /MUSTER/, AUSDRUCK, LIMIT
split /MUSTER/, AUSDRUCK
split /MUSTER/
split
Die split
-Funktion dient dazu, einen String in mehrere Teilstrings zu zerlegen und
diese Teile als Liste zurückzugeben. Sie übernimmt bis zu drei Argumente: ein Muster,
gemäß dem zerlegt wird, den String, der zerlegt werden soll, und eine Obergrenze für
die Anzahl an Listenelementen, die zurückgegeben werden sollen (optional). Wenn Sie
keinen zu zerlegenden String als Argument übergeben, wird der in $_
gespeicherte
Wert verwendet. Sie müssen auch nicht unbedingt ein Muster für die Zerlegung
angeben. Wenn es fehlt, verwendet Perl die verschiedenen Whitespace-Zeichen als
Begrenzer. Bei dem Musterargument handelt es sich immer um einen regulären
Ausdruck der zwischen //
steht. Um beispielsweise einen String an seinen
Kommastellen zu zerlegen, sähe Ihr Muster so aus: /,/
. Betrachten wir einige
Beispiele:
# Leeres Muster zerlegt einen String in einzelne Zeichen
@buchstaben = split //, "wort";
# Ein Leerzeichen im Muster zerlegt einen Satz in seine
# einzelnen Wörter
@worte = split / /, "Dies ist ein Satz";
# Dieses Muster zerlegt den Satz bei jedem Whitespace-Zeichen und
# nicht nur bei Leerzeichen (entspricht dem Standard)
@worte = split /\s/, "Dies ist ein Satz";
# Das dritte Argument stellt sicher, dass nur die ersten zwei Elemente, die
# aus dem String extrahiert wurden, in der Liste zurückgeliefert werden.
($erstes, $zweites) = split /\s/, "Dies ist ein Satz", 2;
sprintf FORMAT, LISTE
Die Perl-Funktion sprintf
wird verwendet, um Strings nach den Konventionen für die
C-Funktion sprintf
zu formatieren. Nachstehend sehen Sie eine Tabelle, die eine
Liste der Konvertierungen für sprintf
enthält:
Weitere Informationen zu den Konventionen für sprintf
finden Sie in der Manpage
zu printf(3)
.
sqrt AUSDRUCK
sqrt
liefert die Quadratwurzel von AUSDRUCK
oder, wenn AUSDRUCK
fehlt, von $_
zurück.
srand AUSDRUCK
srand
initialisiert den Zufallszahlengenerator von Perl. Wenn Sie AUSDRUCK
fortlassen,
wird srand(time)
verwendet. Diese Funktion sollten Sie nur einmal in Ihrem
Programm verwenden.
stat DATEIHANDLE
Die stat
-Funktion trägt Informationen über die in DATEIHANDLE
angegebene Datei
zusammen und liefert eine Liste dieser Informationen zurück. Diese Funktion kann
auch einen Ausdruck, der einen Dateinamen enthält, statt eines geöffneten Datei-
Handles übernehmen. Wird kein Argument übergeben, verwendet stat
den Wert von
$_
als sein Argument. Die von stat
zurückgelieferten Daten stehen in einer Liste und
umfassen:
Werfen wir einen kurzen Blick auf die von stat
zurückgelieferten Werte.
Folgendermaßen würde man eine Liste, die von stat
zurückgegeben wurde, einer
Gruppe von Variablen zuweisen:
($dev,$inode,$mode,$uid,$gid,$rdev,
$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat $filename;
study SKALAR
study
study
nimmt sich Zeit, um SKALAR
(oder $_
, wenn SKALAR
nicht angegeben wurde) zu
studieren - mit dem Ziel, zukünftige Musterabgleiche auf dem Wert effizienter zu
machen. Ob dies letzlich Zeit spart oder nicht, hängt davon ab, wie viele
Musterabgleiche Sie machen wollen und welcher Art diese Abgleiche sind.
substr AUSDRUCK, OFFSET, LAENGE
substr AUSDRUCK, OFFSET
substr
wird verwendet, um eine Folge von Zeichen aus einem String zu extrahieren.
Diese Funktion übernimmt drei Argumente, von denen das letzte optional ist. Die
Argumente sind der Ausdruck, aus dem die Zeichen extrahiert werden sollen (kann ein
skalarer Wert, eine Variable oder ein Aufruf an eine andere Funktion sein), die
Position, an der mit dem Extrahieren der Zeichen begonnen werden soll, und optional
die Anzahl der zu extrahierenden Zeichen. So liefert zum Beispiel der Aufruf
substr("foobar", 3, 2);
die Zeichenfolge ba
zurück. Wenn Sie die Längenangabe
(LAENGE
) fortlassen, also substr("foobar", 3);
, lautet der Rückgabewert bar
. Sie
können auch einen negativen Offsetwert verwenden. Dann wird die Position durch
Rückwärtszählen vom Stringende an ermittelt. Das Beispiel substr("foobar", -4,
2);
liefert ob
zurück.
symlink ALTEDATEI, NEUEDATEI
Die Funktion symlink
dient dazu, einen symbolischen Link von ALTEDATEI
zu
NEUEDATEI
herzustellen. symlink
löst einen fatalen Fehler aus, wenn das System
symlink
nicht unterstützt.
syscall LISTE
syscall
ruft den Systembefehl auf, der als erstes Argument in LISTE
spezifziert
wurde. Die restlichen Elemente in LISTE
werden dem Systembefehl als Argumente
übergeben.
sysopen DATEIHANDLE, DATEINAME, MODUS
sysopen DATEIHANDLE, DATEINAME, MODUS, PERMS
Öffnet die in DATEINAME
spezifizierte Datei und verbindet sie mit DATEIHANDLE
. Wenn
die Datei noch nicht existiert, wird sie erzeugt.
sysread DATEIHANDLE, SKALAR, LAENGE, OFFSET
sysread DATEIHANDLE, SKALAR, LAENGE
Liest mit Hilfe des Systembefehls read(2)
LAENGE
-Bytes aus DATEIHANDLE
in SKALAR
ein. Zurückgeliefert wird die Anzahl der eingelesenen Bytes oder undefined
, wenn ein
Fehler auftrat. Verwenden Sie OFFSET
, wenn Sie die eingelesenen Bytes nicht an den
Anfang des Strings, sondern eine um OFFSET
-Bytes verschobene Position schreiben
wollen.
sysseek DATEIHANDLE, POSITION, VONWOAUS
Ähnlich der seek
-Funkton. Allerdings wird der Systemaufruf lseek(2)
anstelle von
fseek(2)
verwendet.
system LISTE
Die system
-Funktion entspricht dem Aufruf exec LISTE
, mit der Ausnahme, dass sie
in einen neuen Prozeß verzweigt und in diesem Prozeß die Befehle in LISTE
ausführt
und dann zurückkehrt.
syswrite DATEIHANDLE, SKALAR, LAENGE, OFFSET
syswrite DATEIHANDLE, SKALAR, LAENGE
syswrite
versucht mit Hilfe des Systemaufrufs write(2)
LAENGE
-Bytes der Daten aus
der Variablen SKALAR
in DATEIHANDLE
zu schreiben. Zurückgeliefert wird die Anzahl
der geschriebenen Bytes oder, im Falle eines Fehlers, undefined
.
tell DATEIHANDLE
tell
liefert die aktuelle Position für das spezifizierte Datei-Handle zurück. Wenn kein
Datei-Handle angegeben wird, enthält der Rückgabewert die Position der zuletzt
gelesenen Datei.
telldir VERZEICHNISHANDLE
telldir
liefert die aktuelle Position in dem angegeben Verzeichnis-Handle.
tie VARIABLE, KLASSENNAME, LISTE
tie
bindet eine Variable an eine Paketklasse, die eine Implementierung für die
Variable bereitstellt. VARIABLE
ist der Name der zu bindenden Variablen und
KLASSENNAME
der Name der Klasse, die Objekte des korrekten Typs implementiert.
Alle zusätzlichen Argumente werden der new
-Methode der Klasse übergeben.
tied VARIABLE
Falls VARIABLE
an ein Paket gebunden ist,
liefert tied
eine Referenz auf das der
VARIABLE
zugrundeliegende Objekt zurück. Ist die Variable nicht gebunden, lautet der
Rückgabewert undefined
.
time
Die time
-Funktion liefert die Anzahl an Sekunden zurück, die seit Beginn des
systemspezifischen Referenzdatums verstrichen sind. Dieser Zeitpunkt liegt auf den
meisten Systemen bei 00:00:00 UTC, 1. Januar, 1970 und auf dem Macintosh-
Betriebssystem bei 00:00:00 1. Januar 1904. Der zurückgelieferte Wert wird
meistens localtime
oder gmtime
zur Formatierung übergeben.
times
times
liefert ein Array mit vier Elementen zurück, das den Benutzer und die
Systemzeiten für den aktuellen Prozeß und dessen Kinder enthält. Hier ein Beispiel:
($user, $system, $cuser, $csystem) = times;
truncate DATEIHANDLE, LAENGE
truncate AUSDRUCK, LAENGE
Verkürzt die Datei, die durch DATEIHANDLE
oder AUSDRUCK
spezifiziert wurde, auf die in
LAENGE
definierte Länge. Wenn truncate
auf dem System nicht implementiert ist,
wird ein fataler Fehler ausgelöst.
uc AUSDRUCK
Im Gegensatz zu lc
, das alle Buchstaben in einem String in Kleinbuchstaben
konvertiert, konvertiert uc
alle Buchstaben eines Strings in Großbuchstaben.
ucfirst AUSDRUCK
Liefert AUSDRUCK
zurück, nachdem das erste Zeichen in einen Großbuchstaben
konvertiert wurde.
umask AUSDRUCK
umask
wird verwendet, um die Standard-umask
-Maske für den Prozeß zu setzen. Die
Funktion übernimmt eine Oktalzahl (keinen String von Ziffern). Die Funktion umask
ist
nützlich, wenn Ihr Programm eine Reihe von Dateien erzeugt. Wenn AUSDRUCK
fortgelassen wird, liefert umask
die aktuelle umask
-Maske zurück.
undef AUSDRUCK
undef
wird verwendet, um den Wert einer Variablen zu löschen. Die Funktion kann
auf einer Skalarvariablen, einem ganzen Array oder einem ganzen Hash angewendet
werden.
unlink (LISTE)
unlink
löscht die Dateien, die ihr via LISTE
übergeben wurden. Rückgabewert ist die
Anzahl der Dateien, die erfolgreich gelöscht wurden. Wurde unlink
keine Liste
übergeben, wird $_
als Argument verwendet.
unpack SCHABLONE, AUSDRUCK
unpack
ist das Gegenstück zu pack
. Sie übernimmt eine Datenstruktur und übersetzt
sie in eine Liste, die auf einer SCHABLONE
basiert. Das SCHABLONEN
-Format ist das
gleiche wie für pack
.
unshift ARRAY, LISTE
Die unshift
-Funktion fügt einen skalaren Wert als das erste Element in ein Array ein
und verschiebt die Indizes aller folgenden Elemente im Array um eins.
utime LISTE
utime
ist das Perl-Äquivalent zu dem Unix-Befehl touch
. Die Funktion setzt die
Zugriffs- und Änderungszeiten für eine Liste von Dateien. Die ersten zwei Argumente
müssen die numerischen Zugriffs- und Änderungszeiten für die Dateien enthalten. Bei
allen folgenden Argumenten wird davon ausgegangen, dass es sich um Dateien
handelt, deren Zugriffs- und Änderungszeiten geändert werden sollen. Die Funktion
liefert die Zahl der Dateien zurück, die erfolgreich bearbeitet wurden.
values HASH
Diese Funktion liefert ein Array zurück, das die Werte (values
) für die Elemente aus
einem Hash enthält. Die Funktion ist damit das Pendant der Funktion keys
, die ein
Array der Schlüssel aus einem Hash zurückliefert.
vec AUSDRUCK, OFFSET, BITS
vec
behandelt einen String (spezifiziert in AUSDRUCK
) als einen Vektor von
vorzeichenlosen Integerwerten und liefert den Wert des von OFFSET
spezifizierten
Bitfeldes zurück.
wait
wait
wartet einfach auf das Ende eines Kindprozesses und liefert dann die PID dieses
Prozesses zurück.
waitpid PID, FLAGS
Die Funktion waitpid
wartet darauf, dass ein bestimmter Kindprozeß (spezifiziert in
PID
) beendet wird, und liefert dann die Prozeß-ID für den toten Prozeß zurück.
wantarray
wantarray
liefert wahr zurück, wenn der Kontext der gerade ausgeführten Subroutine
einen Listenwert benötigt. Wenn die Funktion in einem skalaren oder leeren Kontext
aufgerufen wird, liefert sie falsch zurück. Um zu vermeiden, dass die ganze Subroutine
ausgeführt wird, können Sie folgende Anweisung verwenden, die sicherstellt, dass die
Subroutine in einem Listenkontext aufgerufen wurde:
return unless defined wantarray;
warn LISTE
warn
wird verwendet, um eine Nachricht an die Standardfehlerausgabe zu schicken,
ohne dass dabei das Programm beendet wird. Abgesehen von der Tatsache, dass das
Programm die Ausführung nicht unterbricht, entspricht diese Funktion der Funktion
die
.
write DATEIHANDLE
Die write
-Funktion wird verwendet, um Daten mit Hilfe einer Schablone auszugeben,
die mit der format
-Funktion definiert wurde. Weitere Informationen hierzu
entnehmen Sie bitte der perlform-Manpage.