Wie man auf ein array in Perl

Aufgabe. Im Code Perl Programm haben eine Reihe von @arr (die ersten drei Buchstaben von dem Wort "array"). In diesem array irgendwelche Werte. Muss man über alle Elemente eines Arrays, und führen Sie einige Aktionen mit den einzelnen Elementen.

Gehen Sie durch ein array mit dem foreach

Die empfohlene Methode für die Lösung dieser Aufgabe ist die Verwendung foreach. Hier ist das Beispielprogramm:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

foreach my $el (@arr) {
    warn $el;
}

Hier ist alles sehr einfach. Es gibt ein array. Dann schaffen wir die Variable $el (Abkürzung für das Wort element). Zyklus foreach setzt diese Variable das erste Element des Arrays (in unserem Beispiel ist dies die Nummer 1). Wird der Körper Zyklus warn $el; — es gibt Wert auf dem Bildschirm. Zyklus foreach passt in die Variable $el nächste Wert aus dem array, wieder wird der Körper der Schleife. Dies wiederholt sich bis der Körper der Schleife wird nicht ausgeführt, um alle Elemente des Arrays.

Gehen Sie durch das array mit einer Schleife for

Hier ist ein Programm-Beispiel, wie ein Spaziergang durch ein Perl-array mit dem Zyklus ähnlich dem Zyklus in der Programmiersprache C:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i < @arr; $i++) {
    warn $arr[$i];
}

Was ist hier Los. Es gibt ein array @arr. Weiter haben wir eine neue Variable $i und Gaben Ihr den Wert 0 (0 ist index das erste Element des array in Perl). Weiter wird der Körper Zyklus warn $arr[$i];. Danach wird die Variable $i mit Hilfe Betreiber ++ erhöht sich um eins. Danach erfolgt die Prüfung der Bedingung $i < @arr. Wenn die Bedingung brachte die Wahrheit, dann wird alles wiederholt.

Diese Lösung ist etwas komplizierter als die Lösung mit dem foreach. Müssen beim arbeiten mit Grenzwerten. Wenn falsch schreiben Sie eine überprüfung, können Sie entweder überspringen der Letzte Wert, oder wenden Sie sich an einen nicht existenten Element hinter dem letzten Element des Arrays (eine solche Behandlung zurück undef).

Hier ist ein Beispiel für Programme, die die gleiche gleiche Weise, aber verwendet eine andere Bedingung for:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i <= $#arr; $i++) {
    warn $arr[$i];
}

for ein array sinnvoll wenn Sie in den Körper der Schleife müssen Sie nicht nur den Wert des Elements, sondern auch sein Zimmer. Aber in diesem Fall Sie können foreach Zyklus, manuell Belichten den Wert der Variablen mit dem index:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);
my $i = 0;

foreach my $el (@arr) {
    warn "index: $i value: $el";
    $i++;
}

Diese Variante einfacher Mensch wahrgenommen wird und er weniger anfällig für Bahamas mit Unterbrechungen. Aber es gibt eine bequemere Möglichkeit, das gleiche sagen mit dem each.

Übergeben in einem array mit Hilfe von while und each

Stichwort each wird nicht sehr Häufig, aber fast immer wenn es verwendet wird, es wird für die Arbeit mit хешом. Nicht gut bekannt, aber each kann benutzt werden, um dann das array Durchlaufen, wobei die Indexposition des Elements und das Element selbst. So sieht der Vorherige Code geschrieben mit dem each:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

while (my ($i, $el) = each @arr) {
    warn "index: $i value: $el";
}

each wurde angewendet werden Arrays von Perl ab Version 5.12. Wenn Sie diesen Code ausführen auf mehr frühere Versionen von Perl, dann wird der Fehler:

Type of arg 1 to each must be hash (not private array) at script.pl line 5, near "@arr) "
Execution of script.pl aborted due to compilation errors.

Verwandte Themen

Andere Artikel