# Tag A

#
Perl-Funktionen

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.

## Wo Sie weitere Informationen finden

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.

## Die Perl-Funktionen in alphabetischer Reihenfolge

Hier finden Sie die Perl-Funktionen in alphabetischer Reihenfolge.

### abs

    abs WERT

Liefert den absoluten Wert von `WERT` zurück. `WERT` kann eine Zahl (wie `-7`) oder ein Ausdruck sein.

### accept

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    closedir VERZEICHNISHANDLE

`closedir` schließt ein Verzeichnis, das mit der Funktion `opendir` geöffnet wurde.

### connect

    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

    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

    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

    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

    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

    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

    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

    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.

Hier ein Beispiel:

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

`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

    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

    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

    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

    getlogin

Liefert die aktuelle Login-Information `aus /etc/utmp` zurück, falls vorhanden. Falls der Wert `Null` lautet, sollten Sie `getpwuid()` verwenden.

### getpeername

    getpeername SOCKET

`getpeername` liefert die gepackte `sockaddr`-Adresse des anderen Endes der `SOCKET`- Verbindung zurück.

### getpgrp

    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

`getppid` liefert die Prozess-ID für den Elternprozeß des aktuellen Prozesses zurück.

### getpriority

    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

    getsockname SOCKET

`getsockname` liefert die gepackte `sockaddr`-Adresse dieses Endes der `SOCKET`- Verbindung zurück.

### getsockopt

    getsockopt SOCKET, LEVEL, OPTNAME

`getsockopt` liefert die angeforderte Option zurück oder im Falle eines Fehlers `undefined`.

### glob

    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

    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

    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

    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

    hex AUSDRUCK

`hex` liest `AUSDRUCK` als einen hexadezimalen String und liefert den Dezimalwert zurück. Wird `AUSDRUCK` fortgelassen, liest die Funktion `$_`.

### import

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    log AUSDRUCK

Liefert den Logarithmus (Basis e) von `AUSDRUCK` oder von `$_`, wenn `AUSDRUCK` nicht angegeben wird.

### lstat

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    ord AUSDRUCK

Liefert den numerischen ASCII-Wert des ersten Zeichens von `AUSDRUCK` zurück. Wenn `AUSDRUCK` nicht angegeben wird, wird `$_` verwendet.

### pack

    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.

Zeichen | Bedeutung
A | Ein ASCII-String, der mit Leerzeichen aufgefüllt wird.
a | Ein ASCII-String, der mit Nullen aufgefüllt wird.
b | Ein Bit-String (aufsteigende Bitreihenfolge wie `vec()`).
B | Ein Bit-String (absteigende Bitreihenfolge).
h | Ein Hexadezimal-String (niedriger Nibble zuerst).
H | Ein Hexadezimal-String (hoher Nibble zuerst).
c | Ein vorzeichenbehafteter `char`-Wert (signed).
C | Ein vorzeichenloser `char`-Wert (unsigned).
s | Ein vorzeichenbehafteter `short`-Wert.
S | Ein vorzeichenloser `short`-Wert. (Hier bedeutet »short« genau 16 Bit, was sich von dem »short« eines lokalen C-Compilers unterscheiden kann.)
i | Ein vorzeichenbehafteter Integer-Wert.
I | Ein vorzeichenloser Integer-Wert. (Hier ist »Integer« mindestens 32 Bit lang. Seine genaue Länge hängt davon ab, was ein lokaler C-Compiler unter »int« versteht, und kann sogar noch länger sein als das »long« in der nächsten Tabellenreihe.)
l | Ein vorzeichenbehafteter `long`-Wert. (Dieses »long« ist genau 32 Bit, was sich von dem »long« eines lokalen C-Compilers unterscheiden kann.)
L | Ein vorzeichenloser Integer-Wert.
n | Ein `short`-Wert in »Netzwerk«-Reihenfolge (big-endian)
N | Ein `long`-Wert in »Netzwerk«-Reihenfolge (big-endian)
v | Ein `short`-Wert in »VAX«-Reihenfolge (little-endian)
V | Ein long-Wert in »VAX«-Reihenfolge (little-endian). (Diese »shorts« und »longs« sind genau 16 Bit bzw. 32 Bit groß).
f | Fließkommazahl mit einfacher Genauigkeit im nativen Format.
d | Fließkommazahl mit doppelter Genauigkeit im nativen Format.
p | Ein Zeiger auf einen nullterminierten String.
P | Ein Zeiger auf eine Struktur (String fester Länge).
u | Ein uu-codierter String.
w | Ein BER-komprimierter Integer. Seine Bytes repräsentieren einen vorzeichenlosen Integer zur Basis 128, die signifkanteste Ziffer zuerst, mit so wenig Ziffern wie möglich. Das achte Bit (das High-Bit) ist in jedem Byte außer dem letzten gesetzt.
x | Ein Null-Byte.
X | Ein Byte nach vorne rücken (letztes Byte wird überschrieben)
@ | Null-Auffüllung bis zur absoluten Position.

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

    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

    pipe LESEHANDLE, SCHREIBHANDLE

`pipe` öffnet eine Pipe von `LESE` `HANDLE` zu `SCHREIB` `HANDLE`, wie der Systemaufruf des gleichen Namens.

### pop

    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

    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

    print DATEIHANDLE LISTE
    print LISTE
    print

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

oder:

    print DATEI $daten, ' ', $mehr_daten, '\n';

### printf

    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;

identisch mit

    print DATEIHANDLE sprintf(FORMAT, LISTE);

### push

    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

    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

    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

    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

    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

    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

    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

    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

    ref AUSDRUCK

`ref` liefert wahr zurück, wenn `AUSDRUCK` eine Referenz ist, im anderen Falle falsch. Wird `AUSDRUCK` nicht angegeben, wird `$_` verwendet.

### rename

    rename ALTERNAME, NEUERNAME

Die `rename`-Funktion ändert den Namen der Datei `ALTERNAME` in `NEUERNAME`.

### require

    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

    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

    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

    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

    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

    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

    scalar AUSDRUCK

Erzwingt, dass der Wert in `AUSDRUCK` in einem skalaren Kontext ausgewertet wird, und liefert den Wert von `AUSDRUCK` zurück.

### seek

    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

    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

    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

    semctl ID, SEMNUM, CMD, ARG

`semctl` ruft den System V IPC-Systemaufruf `semctl(2)` auf.

### semget

    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

    semop KEY, OPSTRING

Diese Funktion ruft den System-V-IPC-Systemaufruf `semop(2)` auf, der Semaphore- Operationen wie Signalisieren und Warten ausführt.

### send

    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

    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

    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

    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

    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

    shmctl ID, CMD, ARG

`shmctl` ruft den System-V-Systemaufruf `shmctl(2)` auf.

### shmget

    shmget SCHLUESSEL, GROESSE, FLAGS

`shmget` ruft den System-V-Systemaufruf `shmget(2)` auf.

### shmread

    shmread ID, VAR, POS, GROESSE

`shmread` ruft den System-V-Systemaufruf `shmread(2)` auf.

### shmwrite

    shmwrite ID, STRING, POS, GROESSE

`shmwrite` ruft den System-V-Systemaufruf `shmwrite(2)` auf.

### shutdown

    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

    sin AUSDRUCK

Liefert den Sinus von `AUSDRUCK` oder von `$_`, wenn kein Argument übergeben wird.

### sleep

    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 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

    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

    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

    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

    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

    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:

Format | Wofür es steht
--- | ---
`%%` | Ein Prozentzeichen
`%c` | Ein Zeichen
`%s` | Einen String
`%d` | Einen vorzeichenbehafteten Integer (in Dezimalnotation)
`%u` | Einen vorzeichenlosen Integer (in Dezimalnotation)
`%o` | Einen vorzeichenlosen Integer (in Oktalnotation)
`%x` | Einen vorzeichenlosen Integer (in Hexadezimalnotation)
`%e` | Eine Fließkommazahl (in wissenschaftlicher Notation)
`%f` | Eine Fließkommazahl (in fixer Dezimalnotation)
`%g` | Eine Fließkommazahl (in `%e`- oder `%f`-Notation)
`%X` | Entspricht `%x`, verwendet jedoch Großbuchstaben für die Hexadezimalnotation
`%E` | Entspricht `%e`, verwendet jedoch ein großes E
`%G` | Entspricht `%g`, verwendet jedoch ein großes G (falls anwendbar)
`%p` | Einen Zeiger, gibt die Speicherposition des Perl-Wertes in hexadezimaler Notation aus
`%n` | Speichert die Anzahl der bisher ausgegebenen Zeichen in der nächsten Variablen der Parameterliste

Tabelle A.2: sprintf-Formate

Weitere Informationen zu den Konventionen für `sprintf` finden Sie in der Manpage zu `printf(3)`.

### sqrt

    sqrt AUSDRUCK

`sqrt` liefert die Quadratwurzel von `AUSDRUCK` oder, wenn `AUSDRUCK` fehlt, von `$_` zurück.

### srand

    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

    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:

- Die Gerätenummer des Dateisystems
- Die Inode-Informationen der Datei
- Den Dateimodus (Typ und Zugriffsrechte)
- Die Anzahl der harten Links auf die Datei
- Die UID und GID des Besitzers der Datei
- Den Geräte-Identifizierer (für besondere Dateien)
- Die Größe der Datei in Bytes
- Die Zeiten seit dem letzten Zugriff auf die Datei, seit der letzten Änderung und seit Änderung der Inode-Struktur
- Die Blockgröße der Datei
- Die Anzahl der verwendeten Blöcke

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

    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

    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

    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

    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

    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

    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

    sysseek DATEIHANDLE, POSITION, VONWOAUS

Ähnlich der `seek`-Funkton. Allerdings wird der Systemaufruf `lseek(2)` anstelle von `fseek(2)` verwendet.

### system

    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

    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

    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

    telldir VERZEICHNISHANDLE

`telldir` liefert die aktuelle Position in dem angegeben Verzeichnis-Handle.

### tie

    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

    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

    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

`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

    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

    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

    ucfirst AUSDRUCK

Liefert `AUSDRUCK` zurück, nachdem das erste Zeichen in einen Großbuchstaben konvertiert wurde.

### umask

    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

    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

    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

    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

    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

    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

    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

    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

`wait` wartet einfach auf das Ende eines Kindprozesses und liefert dann die PID dieses Prozesses zurück.

### waitpid

    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

`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

    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

    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.

© Markt&Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH