Tracks
/
Perl
Perl
/
Lehrplan
/
Arrays und Listen
Ar

Arrays und Listen in Perl

1 Übung

Über Arrays und Listen

Arrays und Listen enthalten eine geordnete Sammlung von Skalaren. Abgesehen von der Verwendung von Referenzen (die in einem eigenen Konzept behandelt werden), bedeutet das, dass Arrays und Listen immer flach sind, das heißt, sie können keine anderen Arrays oder Listen enthalten.

In den meisten Fällen werden Listen von runden Klammern () umschlossen, und ihre Elemente werden durch Kommas , getrennt.

Eine Array-Variable wird normalerweise befüllt, indem man ihr eine Liste zuweist, z. B. my @names = ('Alice', 'Bob', 'Charlie');.

Auf die Elemente eines Arrays oder einer Liste greifst du zu, indem du Indizes über einen Subscript angibst, z. B. ('Alice', 'Bob', 'Charlie')[1] # 'Bob'.

Indizes beginnen in Perl bei 0. Negative Indizes zählen vom Ende des Arrays oder der Liste aus, z. B. ('Alice', 'Bob', 'Charlie')[-1] # 'Charlie'.

Funktionen

Es gibt viele Funktionen, mit denen du mit Arrays und Listen arbeiten kannst. Zu den nützlichsten gehören grep für eine neue Liste der gefilterten Elemente, die eine Bedingung erfüllen, map für das Umwandeln von Elementen in eine neue Liste von Werten und sort für eine neue Liste neu angeordneter Elemente.

Zu den Funktionen zum Bearbeiten von Arrays gehören push, um Elemente am Ende anzuhängen, pop, um das letzte Element zu entfernen, shift, um das erste Element zu entfernen, unshift, um Elemente am Anfang einzufügen, und splice für komplexere Änderungen.

Auch das Iterieren über Arrays und Listen mit einer for(each)-Anweisung wirst du häufig antreffen.

Sigils und ihre Auswirkung

Wenn du auf die Elemente eines Arrays zugreifst, bestimmt das verwendete Sigil das Ergebnis. Der Subscript [] am Ende des Variablennamens sagt Perl, dass du auf ein Array mit diesem Namen zugreifst.

my @names = ('Alice', 'Bob', 'Charlie');

$names[0]; # 'Alice'      <- A scalar
@names[0]; # ('Alice')    <- A slice (with only one index, this probably isn't what you want. There will be a warning.)
%names[0]; # (0, 'Alice') <- A key/index + value slice

$names[1, 2]; # 'Charlie'                <- A scalar (via unsupported syntax for an ancient feature. Probably not what you want. There will be a warning.)
@names[1, 2]; # ('Bob', 'Charlie')       <- A slice
%names[1, 2]; # (1, 'Bob', 2, 'Charlie') <- A key/index + value slice

Es ist zwar erlaubt, aber aus Gründen der Lesbarkeit solltest du verschiedenen Variablentypen nicht denselben Namen geben.

Arrays vs. Listen

Arrays und Listen haben viele Gemeinsamkeiten und lassen sich an vielen Stellen austauschbar verwenden, aber sie sind nicht dasselbe. Eine Liste ist eine feste und unveränderliche Sammlung von Skalaren. Ein Array ist eine veränderliche Sammlung von Skalaren, bei der sich der Inhalt und die Größe des Arrays selbst ändern können.

In manchen Kontexten verhalten sie sich unterschiedlich. Ein Array in einem skalaren Kontext liefert dir die Größe des Arrays. Eine Liste in einem skalaren Kontext liefert dir das letzte Element der Liste und möglicherweise einige Warnungen, weil der Rest ihres Inhalts in einem Void-Kontext verwendet wird.

my @names = ('Alice', 'Bob', 'Charlie');

scalar @names; # 3
scalar ('Alice', 'Bob', 'Charlie'); # 'Charlie' (and some warnings).

Mehr dazu in der folgenden FAQ: Was ist der Unterschied zwischen einer Liste und einem Array?

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Arrays und Listen

Das Üben ist gesperrt

Schalte 10 weitere Übungen frei, um Arrays und Listen zu üben