<< bedingte Verzweigungen | Inhalt | Filehandles >> |
Hashvariablen | Operatoren |
Hashes bzw. assoziative Array sind so etwas ähnliches wie Arrays! Statt einer geordneten Liste, die über ihre Nummerierung angesprochen wird (also über den Zugriffsoperator - z. B. $array[3]), ist ein Hash eine Liste ohne Ordnung. Die Listenelemente werden nicht über ihre Nummerierung oder Reihenfolge oder ähnliches angesprochen, sondern über einen Schlüsselwert (Key), der aus einem String oder einer Zahl besteht. Das heißt, man sagt nicht >>ich will jetzt den Wert des zweiten Arrayelements<<, sondern >>ich will den Wert des Elements mit dem Schlüsselnamen "soundso"<<. Will man einem Hash also ein Element zuordnen, muss man ihm sagen, wie das Element (Schlüssel) heißt und welchen Inhalt das Element hat.
Der Name einer Hashvariablen wird natürlich mit einem besonderen Zeichen eingeleitet: %. Der Rest setzt sich - wie gehabt - aus Buchstaben, Ziffern und dem _ zusammen, wobei das erste Zeichen nach dem % ein Buchstabe sein muss. Angesprochen wird ein Element eines Hashes über den Schlüsselwert, der in geschweiften Klammern {} nach dem Namen der Hashvariablen steht. Vor den Namen wird statt des %-Zeichens ein $ gesetzt, Perl weiß dann, dass auf ein einzelnes Element zugegriffen wird:
liefert:
Man kann auch eine Variable als Schlüssel in den Hash einsetzen:
Das ergibt:
Wie schon gesagt, so etwas wie ein Hash ohne einer Hashvariablen gibt es nicht. Man kann aber einem Hash beim Initialisieren Elemente zuordnen. Dabei werden wie bei einem Array die Schlüsselwerte und Inhalte hintereinander in runden Klammern geschrieben und durch Kommatas getrennt. Obiges Beispiel könnte auch so realisiert werden:
... und das fällt auf
Das geht auch:
Zur besseren Anschauung für die Initialisierung einer Hashvariablen hat man einen Operator => eingeführt, der die gleiche Bedeutung wie ein Komma hat und auch nichts anderes macht, als nur anders auszusehen:
Für Hashvariablen gibt es einige nennenswerte Operatoren.
Operator | Beschreibung | Beispiel |
keys() | Liefert ein Array mit den allen Schlüsselwerten. | keys(%hans) |
values() | Liefert ein Array aller Werte im Hash. | values(%hans) |
delete() | Löscht das angegebene Element aus dem Hash und gibt den Wert des gelöschten Elements zurück. | delete($hans{"Alter"}) |
Ein Beispiel:
Hashvariablen | Operatoren |
<< bedingte Verzweigungen | Inhalt | Filehandles >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |