# Funktionen für Informationen aus Konfigurationsdateien

Allgemeines zu diesen Funktionen
endgrent - zum Ende von /etc/groups springen
endhostent - zum Ende von /etc/hosts springen
endnetent - zum Ende von /etc/networks springen
endprotoent - zum Ende von /etc/protocols springen
endpwent - zum Ende von /etc/passwd springen
endservent - zum Ende von /etc/services springen
getgrent - nächsten Eintrag von /etc/groups ermitteln
getgrgid - Eintrag mit bestimmter Gruppen-ID aus /etc/groups ermitteln
getgrnam - Eintrag mit bestimmtem Gruppennamen aus /etc/groups ermitteln
gethostbyaddr - Eintrag mit bestimmter IP aus /etc/hosts ermitteln
gethostbyname - Eintrag mit bestimmtem Hostnamen aus /etc/hosts ermitteln
gethostent - nächsten Eintrag von /etc/hosts ermitteln
getlogin - Namen des aktuellen Benutzers ermitteln
getnetbyaddr - Eintrag mit bestimmter IP aus /etc/networks ermitteln
getnetbyname - Eintrag mit bestimmtem Netzwerknamen aus /etc/networks ermitteln
getnetent - nächsten Eintrag von /etc/networks ermitteln
getprotobyname - Eintrag mit bestimmtem Protokollnamen aus /etc/protocols ermitteln
getprotobynumber - Eintrag mit bestimmter Protokollnummer aus /etc/protocols ermitteln
getprotoent - nächsten Eintrag von /etc/protocols ermitteln
getpwent - nächsten Eintrag von /etc/passwd ermitteln
getpwnam - Eintrag mit bestimmtem Benutzernamen aus /etc/passwd ermitteln
getpwuid - Eintrag mit bestimmter Benutzernummer aus /etc/passwd ermitteln
getservbyname - Eintrag mit bestimmtem Portnamen aus /etc/services ermitteln
getservbyport - Eintrag mit bestimmter Portnummer aus /etc/services ermitteln
getservent - nächsten Eintrag von /etc/services ermitteln
setgrent - zum Anfang von /etc/groups springen
sethostent - zum Anfang von /etc/hosts springen
setnetent - zum Anfang von /etc/networks springen
setprotoent - zum Anfang von /etc/protocols springen
setpwent - zum Anfang von /etc/passwd springen
setservent - zum Anfang von /etc/services springen

## Allgemeines zu diesen Funktionen

Die hier versammelten Funktionen dienen dazu, Einträge aus System-Konfigurationsdateien zu ermitteln. Es handelt sich dabei ausschließlich um Konfigurationsdaten von Unix-Systemen. Der Vorteil der hier beschriebenen Funktionen gegenüber dem direkten Auslesen jener Dateien ist, dass sie rechnerunabhängig sind, d.h. die Befehle funktionieren auch dann, wenn ein Unix-System anders als im Normalfall konfiguriert ist und die entsprechenden Dateien an anderen Orten liegen.

Die relevanten Konfigurationsdateien werden im folgenden kurz vorgestellt. Die Pfadnamen entsprechen der üblichen Ablage.

### Konfigurationsdatei: /etc/group

In dieser Datei werden Berechtigungsgruppen und deren Mitglieder gespeichert. Eine Berechtigungsgruppe kann bestimmte Rechte an Dateien und Verzeichnissen besitzen, die einem ihrer Mitglieder gehören. Neben Einträgen für "menschliche" Berechtigungsgruppen enthält die Datei auch solche für reservierte, rechnereigene Berechtigungsgruppen, wie beispielsweise `mail`, `bin` oder `tty`. Passwörter sind in dieser Datei nur verschlüsselt gespeichert.
Typische Daten (Beispiel):
`root x 0 root`
`bin x 1 root bin daemon`
`sys x 101 root bin sys`
Jede Zeile der Datei enthält den Namen einer Berechtigungsgruppe, dahinter (verschlüsselt) deren Passwort, dahinter die Gruppennummer (GID) und dahinter die Liste der Mitglieder der Gruppe.
Funktionen zu dieser Datei sind endgrent getgrent getgrgid getgrnam setgrent
Im Beispiel zur Funktion getgrent wird gezeigt, wie Sie die komplette Datei /etc/groups ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

### Konfigurationsdatei: /etc/hosts

In dieser Datei werden IP-Adressen und Domain-Namen oder Rechnernamen zugeordnet, die der Rechner selber auflösen muss.
Typische Daten (Beispiel):
`127.0.0.1 localhost`
`192.168.10.101 sonne.galaxis.de sonne`
`192.168.85.1 zeus.edu.saxedu.de zeus`
Jede Zeile der Datei enthält eine IP-Adresse, dahinter den offiziellen Domain-Namen und dahinter wahlweise den internen Rechnernamen, jeweils durch Leerzeichen oder Tabulatoren getrennt. Hinter dem internen Rechnernamen kann wahlweise auch noch ein Aliasname folgen.
Funktionen zu dieser Datei sind endhostent gethostbyaddr gethostbyname gethostent sethostent
Im Beispiel zur Funktion gethostent wird gezeigt, wie Sie die komplette Datei /etc/hosts ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

### Konfigurationsdatei: /etc/networks

In dieser Datei werden Netzwerknamen und zugehörige IP-Adressen einander zugeordnet. Dabei wird oft auch der Adresstyp und die Netznummer angegeben.
Typische Daten (Beispiel):
`loopback 127.0.0.0 2 2130706432`
Jede Zeile der Datei enthält einen Netzwerknamen, die zugehörige Netzwerk-IP-Adresse, den Adresstyp und die Netznummer.
Funktionen zu dieser Datei sind endnetent getnetbyaddr getnetbyname getnetent setnetent
Im Beispiel zur Funktion getnetent wird gezeigt, wie Sie die komplette Datei /etc/networks ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

### Konfigurationsdatei: /etc/passwd

In dieser Datei werden alle wichtigen Daten aller Benutzer gespeichert, die Zugang zum Rechner haben. Dazu gehören z.B. die Benutzernamen, ihre Passwörter, die Benutzernummern (UIDs) und die Heimatverzeichnisse der Anwender. Neben Einträgen für normale Benutzer enthält die Datei auch solche für reservierte Benutzer, wie beispielsweise `root` (auf emanzipierten Rechnern auch `ruth`), `daemon` oder `ftp` (für den anonymen FTP-Zugang). Passwörter sind in dieser Datei nur verschlüsselt gespeichert.
Typische Daten (Beispiel):
`root x 0 0 root /root /bin/mysh`
`bin x 1 1 bin /bin /bin/mysh`
`customer x 29 29 Kunde /usr/lib/kunde /bin/mysh`
Jede Zeile der Datei enthält den Benutzernamen, das zugehörige Passwort (verschlüsselt), die zugehörige Benutzernummer (UID), die Nummer seiner Berechtigungsgruppe (GID), beschreibende Angaben zum Benutzer, sein Heimatverzeichnis auf dem Rechner, seine Shell (Instanz des Kommando-Interpreters), und gegebenenfalls Angaben zum Verfallsdatum der Gültigkeit des Eintrags.
Funktionen zu dieser Datei sind endpwent getpwent getpwnam getpwuid setpwent
Im Beispiel zur Funktion getpwent wird gezeigt, wie Sie die komplette Datei /etc/passwd ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

### Konfigurationsdatei: /etc/protocols

In dieser Datei sind die Protokollnamen und Protokollnummern der Transportprotokolle eingetragen, die das System unterstützt.
Typische Daten (Beispiel):
`ip IP 0`
`icmp ICMP 1`
`igmp IGMP 2`
`ggp GGP 3`
`tcp TCP 6`
Jede Zeile der Datei enthält den Namen des Transportprotokolls, die Protokollnummer und den Aliasnamen des Protokolls.
Funktionen zu dieser Datei sind endprotoent getprotobyname getprotobynumber getprotoent setprotoent
Im Beispiel zur Funktion getprotoent wird gezeigt, wie Sie die komplette Datei /etc/protocols ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

### Konfigurationsdatei: /etc/services

In dieser Datei werden die Namen von Netzwerkdiensten sowie die zugehörigen Portnummern und Protokollnamen gespeichert.
Typische Daten (Beispiel):
`ftp 21 tcp`
`telnet 23 tcp`
`smtp mail 25 tcp`
`whois nicname 43 tcp`
`domain nameserver 53 tcp`
`gopher 70 tcp`
`finger 79 tcp`
`www http 80 tcp`
`www 80 udp`
Funktionen zu dieser Datei sind endservent getservbyname getservbyport getservent setservent
Im Beispiel zur Funktion getservent wird gezeigt, wie Sie die komplette Datei /etc/services ausgeben können. Dadurch gewinnen Sie einen vollständigen Überblick über den Inhalt der Datei.

## endgrent - zum Ende von /etc/groups springen

Springt an das Ende der Datei /etc/group und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getgrent();
    print "$Wert\n";
    endgrent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit getgrent den ersten Eintrag aus /etc/groups, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## endhostent - zum Ende von /etc/hosts springen

Springt an das Ende der Datei /etc/hosts und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = gethostent();
    print "$Wert\n";
    endhostent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit gethostent den ersten Eintrag aus /etc/hosts, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## endnetent - zum Ende von /etc/networks springen

Springt an das Ende der Datei /etc/networks und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getnetent();
    print "$Wert\n";
    endnetent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit getnetent den ersten Eintrag aus /etc/networks, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## endprotoent - zum Ende von /etc/protocols springen

Springt an das Ende der Datei /etc/protocols und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getprotoent();
    print "$Wert\n";
    endprotent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit getprotoent den ersten Eintrag aus /etc/protocols, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## endpwent - zum Ende von /etc/passwd springen

Springt an das Ende der Datei /etc/passwd und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getpwent();
    print "$Wert\n";
    endpwent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit getpwent den ersten Eintrag aus /etc/passwd, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## endservent - zum Ende von /etc/services springen

Springt an das Ende der Datei /etc/services und beendet den Zugriff darauf.

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getservent();
    print "$Wert\n";
    endservent();
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt mit getnetent den ersten Eintrag aus /etc/services, gibt den ermittelten Wert aus und springt dann ans Ende der Datei.

## getgrent - nächsten Eintrag von /etc/groups ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/group oder den Listenkontext einer Liste mit vier Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getgrent();
    while(@Liste) {
      print "$Liste[0]]  $Liste[1]  $Liste[2]  $Liste[3]\n";
      @Liste = getgrent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/groups mit einem CGI-Script ausgeben lassen können. Zunächst wird `getgrent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die vier Elemente des Arrays ausgegeben, und `getgrent` wird für den nächsten Schleifendurchgang aufgerufen. Die vier Elemente des Arrays, die von der Funktion zurückgegeben werden, sind:
`$Liste[0]` = Name der Berechtigungsgruppe,
`$Liste[1]` = Passwort der Berechtigungsgruppe (verschlüsselt),
`$Liste[2]` = Nummer der Berechtigungsgruppe (GID),
`$Liste[3]` = Mitgliedernamen der Berechtigungsgruppe

## getgrgid - Eintrag mit bestimmter Gruppen-ID aus /etc/groups ermitteln

Ermittelt aus der Datei /etc/group den zugehörigen Eintrag zu einer bestimmten Gruppen-ID (GID). Im skalaren Kontext wird dabei der zugehörige Gruppenname ermittelt, im Listenkontext der gesamte Eintrag zur GID.

Erwartet als Parameter:
1. die gewünschte GID.

Gibt je nach Kontext entweder den Gruppennamen oder die Liste zurück. Wenn die angegebene GID nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body>\n";

    ($Name,$Passwort,$Gid,$Mitglieder) = getgrgid(2);
    print "<h3>Listenkontext:</h3>";
    print "<pre>$Name\n$GrPasswort\n$Gid\n$Mitglieder</pre>";

    print "<h3>Skalarer Kontext:</h3><pre>";
    my $Wert = getgrgid(2);
    print "<pre>$Wert</pre>\n";

    print "</body></html>\n";

### Erläuterung:

Das Beispiel ruft insgesamt zweimal die Funktion `getgrgid` auf, zuerst im Listenkontext, später im skalaren Kontext. In beiden Fällen wird `2` als gesuchte Gruppennummer (GID) übergeben. Im Listenkontext wird der gesamte gefundene Eintrag, bestehend aus Gruppenname, Gruppenpasswort (verschlüsselt), Gruppennummer und Mitgliedernamen, vom Script ausgegeben. Im skalaren Kontext wird nur der zur Gruppennummer gehörige Gruppenname ausgegeben.

## getgrnam - Eintrag mit bestimmtem Gruppennamen aus /etc/groups ermitteln

Ermittelt aus der Datei /etc/group den zugehörigen Eintrag zu einem bestimmten Gruppennamen. Im skalaren Kontext wird dabei die Gruppen-ID (GID) des angegebenen Namens ermittelt, im Listenkontext der gesamte Eintrag zu dem Gruppennamen.

Erwartet als Parameter:
1. den gewünschten Gruppennamen.

Gibt je nach Kontext entweder die zugehörige Gruppennummer (GID) oder die Liste zurück. Wenn der angegebene Gruppenname nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body>\n";

    (my $Name, my $Passwort, my $Gid, my $Mitglieder) = getgrnam("mail");
    print "<h3>Listenkontext:</h3>";
    print "<pre>$Name\n$Passwort\n$Gid\n$Mitglieder</pre>";

    print "<h3>Skalarer Kontext:</h3>";
    my $Wert = getgrnam("mail");
    print "<pre>$Wert</pre>\n";

    print "</body></html>\n";

### Erläuterung:

Das Beispiel ruft insgesamt zweimal die Funktion `getgrnam` auf, zuerst im Listenkontext, später im skalaren Kontext. In beiden Fällen wird `"mail"` als gesuchter Gruppenname übergeben. Im Listenkontext wird der gesamte gefundene Eintrag, bestehend aus Gruppenname, Gruppenpasswort (verschlüsselt), Gruppennummer und Mitgliedernamen, vom Script ausgegeben. Im skalaren Kontext wird nur die zum Gruppennamen gehörige Gruppennummer (GID) ausgegeben.

## gethostbyaddr - Eintrag mit bestimmter IP aus /etc/hosts ermitteln

Ermittelt aus der Datei /etc/hosts den Hostnamen zu einer bestimmten IP-Adresse.

Erwartet als Parameter:
1. die gewünschte IP-Adresse, und zwar numerisch in binärer Schreibweise.
2. den Adresstyp der IP-Adresse (numerisch).

Gibt den zugehörigen Hostnamen zurück. Wenn die angegebene IP-Adresse nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    use Socket;
    my $addr = inet_aton("127.0.0.1");
    my $Wert  = gethostbyaddr($addr, AF_INET);
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie den Hostnamen zu einer IP-Adresse auf dem Rechner ermitteln können. Um die etwas komplizierte Parameterversorgung der Funktion `gethostbyaddr` sicherzustellen, wird das Standardmodul `Socket` verwendet. Durch Aufruf der Modul-Funktion `inet_aton` wird eine in üblicher Schreibweise notierte, übergebene IP-Adresse in die erforderliche binäre Form umgewandelt. Das Ergebnis wird in dem Skalar `$addr` gespeichert. Das Modul `Socket` stellt auch Konstanten für den Adresstyp zur Verfügung. Die korrekte Konstante für den zweiten Parameter von `gethostbyaddr` ist `AF_INET`. Durch Übergabe von `$addr` und `AF_INET` wird `gethostbyaddr` richtig versorgt und gibt den Hostnamen zur Beispieladresse `127.0.0.1` aus (üblicherweise `localhost`).

## gethostbyname - Eintrag mit bestimmtem Hostnamen aus /etc/hosts ermitteln

Ermittelt aus der Datei /etc/hosts die IP-Adresse zu einem bestimmten Hostnamen.

Erwartet als Parameter:
1. den gewünschten Hostnamen.

Gibt die zugehörige IP-Adresse zurück, allerdings binär numerisch.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    use Socket;
    my $addr  = gethostbyname("localhost");
    my $Wert = inet_ntoa($addr);
    print "$Wert";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie die IP-Adresse zu einem Hostnamen auf dem Rechner ermitteln können. Dazu wird das Standardmodul `Socket` verwendet. Damit lässt sich der binär numerische Rückgabewert von `gethostbyname`, der im Beispiel in dem Skalar `$addr` gespeichert wird, bequem in die übliche Schreibweise konvertieren. Durch Aufruf der Modul-Funktion `inet_ntoa` wird `$addr` in die übliche Schreibweise umgewandelt. Das Ergebnis der Konvertierung wird im Beispiel in dem Skalar `$Wert` gespeichert. Anschließend wird die IP-Adresse zu dem Hostnamen `localhost` ausgegeben (üblicherweise `127.0.0.1`).

## gethostent - nächsten Eintrag von /etc/hosts ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/hosts oder im Listenkontext eine Liste mit fünf und mehr Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = gethostent();
    while(@Liste) {
      print "$Liste[0]   $Liste[1]   $Liste[2]";
      for(my $i = 0; $i < $Liste[3]; $i++) {
        (my $a, my $b, my $c, my $d) = unpack('C4',$Liste[4+$i]);
        print "  $a.$b.$c.$d";
      }
      print "\n";
      @Liste = gethostent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/hosts mit einem CGI-Script ausgeben lassen können. Zunächst wird `gethostent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die Elemente der Liste ausgegeben, und `getgrent` wird für den nächsten Schleifendurchgang aufgerufen. Die Liste enthält als letztes Listenelement wiederum eine Liste, sodass eine weitere innere for-Schleife nötig ist, um alle Elemente zu ermitteln. Die Elemente der Liste, die von der Funktion zurückgegeben wird, sind:
`$Liste[0]` = Hostname,
`$Liste[1]` = Aliasnamen des Hostnamens,
`$Liste[2]` = Adresstyp,
`$Liste[3]` = Anzahl der noch folgenden Listenelemente
`$Liste[4]` und weitere = zugeordnete IP-Adressen
Die zugeordneten IP-Adressen sind binär gespeichert. Um die übliche Vier-Zahlen-Darstellung zu erhalten, muss die binäre Schreibweise erst konvertiert werden. Das ist durch Anwendung der Funktion unpack mit `C4` als erstem Parameter möglich, so wie im obigen Beispiel. Dort werden auf diese Weise die vier Einzelzahlen der IP-Adresse ermittelt und in den Skalaren `$a`, `$b`, `$c` und `$d` gespeichert.

## getlogin - Namen des aktuellen Benutzers ermitteln

Erwartet keine Parameter.

Gibt den Loginnamen des aktuellen Benutzers zurück.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    my $Wert = getlogin();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt den Loginnamen mit `getlogin`, speichert ihn in dem Skalar `$Wert` und gibt diesen zur Kontrolle aus.

## getnetbyaddr - Eintrag mit bestimmter IP aus /etc/networks ermitteln

Ermittelt aus der Datei /etc/networks den Netzwerknamen zu einer bestimmten IP-Adresse.

Erwartet als Parameter:
1. die gewünschte IP-Adresse, und zwar numerisch in binärer Schreibweise.
2. den Adresstyp der IP-Adresse (numerisch).

Gibt den zugehörigen Netzwerknamen zurück. Wenn die angegebene IP-Adresse nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    use Socket;
    my $addr = inet_aton("127.0.0.0");
    my $Wert  = getnetbyaddr($addr, AF_INET);
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie den Netzwerknamen zu einer IP-Adresse auf dem Rechner ermitteln können. Um die etwas komplizierte Parameterversorgung der Funktion `getnetbyaddr` sicherzustellen, wird das Standardmodul `Socket` verwendet. Durch Aufruf der Modul-Funktion `inet_aton` wird eine in üblicher Schreibweise notierte, übergebene IP-Adresse in die erforderliche binäre Form umgewandelt. Das Ergebnis wird in dem Skalar `$addr` gespeichert. Das Modul `Socket` stellt auch Konstanten für den Adresstyp zur Verfügung. Die korrekte Konstante für den zweiten Parameter von `gethostbyaddr` ist `AF_INET`. Durch Übergabe von `$addr` und `AF_INET` wird `getnetbyaddr` richtig versorgt und gibt den Netzwerknamen zur Beispieladresse `127.0.0.0` aus (üblicherweise `loopback`).

## getnetbyname - Eintrag mit bestimmtem Netzwerknamen aus /etc/networks ermitteln

Ermittelt aus der Datei /etc/networks die IP-Adresse zu einem bestimmten Netzwerknamen.

Erwartet als Parameter:
1. den gewünschten Netzwerknamen.

Gibt die zugehörige IP-Adresse zurück, allerdings binär numerisch.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    use Socket;
    my $addr  = getnetbyname("loopback");
    my $Wert = inet_ntoa($addr);
    print "$Wert";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie die IP-Adresse zu einem Netzwerknamen auf dem Rechner ermitteln können. Dazu wird das Standardmodul `Socket` verwendet. Damit lässt sich der binär numerische Rückgabewert von `getnetbyname`, der im Beispiel in dem Skalar `$addr` gespeichert wird, bequem in die übliche Schreibweise konvertieren. Durch Aufruf der Modul-Funktion `inet_ntoa` wird `$addr` in die übliche Schreibweise umgewandelt. Das Ergebnis der Konvertierung wird im Beispiel in dem Skalar `$Wert` gespeichert. Anschließend wird die IP-Adresse zu dem Netzwerknamen `loopback` ausgegeben (üblicherweise `127.0.0.0`).

## getnetent - nächsten Eintrag von /etc/networks ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/networks oder im Listenkontext eine Liste mit vier Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getnetent();
    while(@Liste) {
      print "$Liste[0]  $Liste[1]  $Liste[2]  $Liste[3]\n";
      @Liste = getnetent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/networks mit einem CGI-Script im Browser ausgeben können. Zunächst wird `getnetent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die vier Elemente der Liste ausgegeben, und `getnetent` wird für den nächsten Schleifendurchgang aufgerufen. Die vier Elemente der Liste, die von der Funktion zurückgegeben wird, sind:
`$Liste[0]` = Name des Netzwerks,
`$Liste[1]` = Aliasnamen des Netzwerks,
`$Liste[2]` = Adresstyp,
`$Liste[3]` = Nummer des Netzwerks

## getprotobyname - Eintrag mit bestimmtem Protokollnamen aus /etc/protocols ermitteln

Ermittelt aus der Datei /etc/protocols die Protokollnummer zu einem bestimmten Protokollnamen.

Erwartet als Parameter:
1. den gewünschten Protokollnamen.

Gibt die zugehörige Protokollnummer zurück. Wenn der übergebene Protokollname nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my $Wert = getprotobyname("tcp");
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt die Protokollnummer zum Protokoll `tcp`. Dazu dient der Aufruf `getprotobyname("tcp")`, dessen Rückgabewert im Skalar `$Wert` gespeichert wird. Zur Kontrolle wird der Wert ausgegeben.

## getprotobynumber - Eintrag mit bestimmter Protokollnummer aus /etc/protocols ermitteln

Ermittelt aus der Datei /etc/protocols den Protokollnamen zu einer bestimmten Protokollnummer.

Erwartet als Parameter:
1. die gewünschte Protokollnummer.

Gibt den zugehörigen Protokollnamen zurück. Wenn die übergebene Protokollnummer nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my $Wert = getprotobynumber(17);
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt den Protokollnamen zur Protokollnummer `17`. Dazu dient der Aufruf `getprotobynumber(17)`, dessen Rückgabewert im Skalar `$Wert` gespeichert wird. Zur Kontrolle wird der Wert ausgegeben.

## getprotoent - nächsten Eintrag von /etc/protocols ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/protocols oder im Listenkontext eine Liste mit drei Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getprotoent();
    while(@Liste) {
      print "$Liste[0]  $Liste[1]  $Liste[2]\n";
      @Liste = getprotoent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/protocols mit einem CGI-Script ausgeben lassen können. Zunächst wird `getprotoent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die vier Elemente der Liste ausgegeben, und `getnetent` wird für den nächsten Schleifendurchgang aufgerufen. Die drei Elemente der Liste, die von der Funktion zurückgegeben wird, sind:
`$Liste[0]` = Protokollname,
`$Liste[1]` = Protokollnummer,
`$Liste[2]` = Aliasname des Protokolls

## getpwent - nächsten Eintrag von /etc/passwd ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/passwd oder im Listenkontext eine Liste mit bis zu neun Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getpwent();
    while(@Liste) {
      print "$Liste[0]  $Liste[1]  $Liste[2]  $Liste[3]  $Liste[4]  $Liste[5]  $Liste[6]  $Liste[7]  $Liste[8]\n";
      @Liste = getpwent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/passwd mit einem CGI-Script ausgeben lassen können. Zunächst wird `getpwent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die neun Elemente der Liste ausgegeben, und `getpwent` wird für den nächsten Schleifendurchgang aufgerufen. Die neun Elemente der Liste, die von der Funktion zurückgegeben wird, sind:
`$Liste[0]` = Benutzername,
`$Liste[1]` = Benutzerpasswort(verschlüsselt),
`$Liste[2]` = Benutzernummer (UID),
`$Liste[3]` = Nummer der zugehörigen Berechtigungsgruppe (GID),
`$Liste[4]` = beschreibende Angaben,
`$Liste[5]` = beschreibende Angaben,
`$Liste[6]` = Heimatverzeichnis des Benutzers,
`$Liste[7]` = Shell des Benutzers,
`$Liste[8]` = (optional) Verfallszeitpunkt der Gültigkeit des Eintrags

## getpwnam - Eintrag mit bestimmtem Benutzernamen aus /etc/passwd ermitteln

Ermittelt zu einem bestimmten Benutzernamen den Eintrag aus der Datei /etc/passwd den zugehörigen Eintrag. Im skalaren Kontext wird die Benutzernummer (UID) ermittelt, im Listenkontext eine Liste mit bis zu neun Elementen.

Erwartet als Parameter:
1. den gewünschten Benutzernamen.

Gibt im skalaren Kontext die zugehörige Benutzernummer (UID) und im Listenkontext eine Liste mit allen Daten des Eintrags zurück. Wenn der Benutzername nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getpwnam("uucp");
    print "$Liste[0]  $Liste[1]  $Liste[2]  $Liste[3]  $Liste[4]  $Liste[5]  $Liste[6]  $Liste[7]  $Liste[8]\n";

    my $Wert = getpwnam("uucp");
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt für den Benutzernamen `uucp`, der der Funktion `getpwnam` übergeben wird, den zugehörigen Eintrag - zuerst im Listenkontext, und beim zweiten Aufruf im skalaren Kontext. Im Listenkontext werden alle neun Elemente des Eintrags ermittelt und im Array `@Liste` gespeichert, im skalaren Kontext nur die Benutzernummer (UID), gespeichert im Skalar `$Wert`. Das Beispiel gibt beide Aufrufergebnisse zur Kontrolle aus. Zur Bedeutung der Array-Elemente siehe Funktion getpwent.

## getpwuid - Eintrag mit bestimmter Benutzernummer aus /etc/passwd ermitteln

Ermittelt zu einer bestimmten Benutzernummer (UID) den Eintrag aus der Datei /etc/passwd den zugehörigen Eintrag. Im skalaren Kontext wird der Benutzername ermittelt, im Listenkontext eine Liste mit bis zu neun Elementen.

Erwartet als Parameter:
1. die gewünschte Benutzernummer (UID).

Gibt im skalaren Kontext den zugehörigen Benutzernamen und im Listenkontext eine Liste mit allen Daten des Eintrags zurück. Wenn die Benutzernummer nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getpwuid(2);
    print "$Liste[0]  $Liste[1]  $Liste[2]  $Liste[3]  $Liste[4]  $Liste[5]  $Liste[6]  $Liste[7]  $Liste[8]\n";

    my $Wert = getpwuid(2);
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt für die Benutzernummer `2`, der der Funktion `getpwuid` übergeben wird, den zugehörigen Eintrag - zuerst im Listenkontext, und beim zweiten Aufruf im skalaren Kontext. Im Listenkontext werden alle neun Elemente des Eintrags ermittelt und im Array `@Liste` gespeichert, im skalaren Kontext nur der Benutzername, gespeichert im Skalar `$Wert`. Das Beispiel gibt beide Aufrufergebnisse zur Kontrolle aus. Zur Bedeutung der Listenelemente siehe Funktion getpwent.

## getservbyname - Eintrag mit bestimmtem Portnamen aus /etc/services ermitteln

Ermittelt aus der Datei /etc/services die Portnummer zu einem bestimmten Netzwerkdienst.

Erwartet als Parameter:
1. den Namen des gewünschten Netzwerkdienstes,
2. den Namen des gewünschten Protokolls.

Gibt die zugehörige Portnummer zurück. Wenn der übergebene Netzwerkname oder das Protokoll nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my $Wert = getservbyname("www","tcp");
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt die Portnummer zum Netzwerkdienst `www` auf dem Netzwerkprotokoll `tcp`. Dazu dient der Aufruf `getservbyname("www","tcp")`, dessen Rückgabewert im Skalar `$Wert` gespeichert wird. Zur Kontrolle wird der Wert ausgegeben.

## getservbyport - Eintrag mit bestimmter Portnummer aus /etc/services ermitteln

Ermittelt aus der Datei /etc/services den Namen eines Netzwerkdienstes zu einer bestimmten Portnummer.

Erwartet als Parameter:
1. die gewünschten Portnummer,
2. den Namen des gewünschten Protokolls.

Gibt den Namen des zugehörigen Netzwerkdienstes zurück. Wenn die übergebene Portnummer oder das Protokoll nicht gefunden wurde, wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my $Wert = getservbyport(80,"tcp");
    print "$Wert\n";

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel ermittelt den Namen des Netzwerkdienstes mit der Portnummer `80` auf dem Netzwerkprotokoll `tcp`. Dazu dient der Aufruf `getservbyport(80,"tcp")`, dessen Rückgabewert im Skalar `$Wert` gespeichert wird. Zur Kontrolle wird der Wert ausgegeben.

## getservent - nächsten Eintrag von /etc/services ermitteln

Ermittelt im skalaren Kontext den jeweils nächsten Eintrag aus der Datei /etc/services oder im Listenkontext eine Liste mit vier Elementen.

Erwartet keine Parameter.

Gibt je nach Kontext entweder den nächsten Dateieintrag oder die Liste zurück. Bei Dateiende wird `undef` zurückgegeben.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";

    my @Liste = getservent();
    while(@Liste) {
      print "$Liste[0]  $Liste[1]  $Liste[2]  $Liste[3]\n";
      @Liste = getservent();
    }

    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel zeigt, wie Sie alle Einträge der Datei /etc/services mit einem CGI-Script ausgeben lassen können. Zunächst wird `getservent` erstmals aufgerufen. Der Rückgabewert wird als Listenkontext interpretiert und im Array `@Liste` gespeichert. Solange die Liste einen Inhalt enthält - `while(@Liste)` - werden die vier Elemente der Liste ausgegeben, und `getservent` wird für den nächsten Schleifendurchgang aufgerufen. Die vier Elemente der Liste, die von der Funktion zurückgegeben wird, sind:
`$Liste[0]` = Name des Netzwerkdienstes,
`$Liste[1]` = Aliasname des Netzwerkdienstes,
`$Liste[2]` = Portnummer des Netzwerkdienstes,
`$Liste[3]` = Name des zugehörigen Protokolls

## setgrent - zum Anfang von /etc/groups springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    setgrent();
    my $Wert = getgrent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `setgrent` zum Anfang der Datei. Anschließend liest es mit getgrent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

## sethostent - zum Anfang von /etc/hosts springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    sethostent();
    my $Wert = gethostent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `sethostent` zum Anfang der Datei. Anschließend liest es mit gethostent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

## setnetent - zum Anfang von /etc/networks springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    setnetent();
    my $Wert = getnetent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `setnetent` zum Anfang der Datei. Anschließend liest es mit getnetent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

## setprotoent - zum Anfang von /etc/protocols springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    setprotoent();
    my $Wert = getprotoent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `setprotoent` zum Anfang der Datei. Anschließend liest es mit getprotoent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

## setpwent - zum Anfang von /etc/passwd springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    setpwent();
    my $Wert = getpwent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `setpwent` zum Anfang der Datei. Anschließend liest es mit getpwent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

## setservent - zum Anfang von /etc/services springen

Erwartet keine Parameter.

### Beispiel eines vollständigen CGI-Scripts in Perl:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Test-Ausgabe</title></head><body><pre>\n";
    setservent();
    my $Wert = getservent();
    print "$Wert\n";
    print "</pre></body></html>\n";

### Erläuterung:

Das Beispiel springt mit `setservent` zum Anfang der Datei. Anschließend liest es mit getservent den nächsten, in dem Fall den ersten Eintrag der Datei aus. Der Rückgabewert, der im Skalar `$Wert` gespeichert ist, wird zur Kontrolle ausgegeben.

| Funktionen für Module und Packages
| Funktionen für Betriebssystemaufrufe

© 2007 Impressum