Login
Login-Name Passwort


 
Newsletter
Werbung

Fr, 4. Juni 1999, 00:00

Perl/CGI-Workshop, Teil 4

Arrays

Ein Array ist eine Menge aus Skalaren. Allerdings sind Arrays in Perl hundertmal einfacher zu handhaben als in anderen Sprachen.

Ein Array zeichnet sich in Perl dadurch aus, dass sein Name mit dem "Klammeraffen" (@) beginnt. Hier ein kleines Beispiel zur Verwendung eines Arrays.

<em>#!/usr/bin/perl</em>
<em># array1.pl -- by W. Jährling</em>
@something = (); <em># leeres Array</em>
@something = (23, 8, "Text\n", 3.14);
$a = "Hallo";
$b = "Welt";
@anything = ($a, $b);
@something = @anything; <em># Array kopieren</em>
($a, $b) = ($b, $a) <em># Werte vertauschen</em>
@something = 5 .. 8; <em># Ergibt die Liste (5, 6, 7, 8)</em>

Wie Sie sehen, sind Arrays in Perl dynamisch und nicht auf eine bestimmte Anzahl Elemente festgelegt (wie in C). Sie können beliebig Elemente an ein Array anhängen, wenn Sie wollen. Die Größe eines Arrays ist lediglich durch den verfügbaren Speicherplatz beschränkt.

Sie können auch auf einzelne Elemente eines Arrays zugreifen:

<em>#!/usr/bin/perl</em>
<em># array2.pl -- by W. Jährling</em>
@zahlen = 5 .. 100; <em># 96 Elemente</em>
print $zahlen&#91;0&#93;, "\n"; <em># 1. Element</em>
print $zahlen&#91;9&#93;, "\n"; <em># 10. Element</em>
print "Position (0 bis 95): ";
$position = <STDIN>;
print $zahlen&#91;$position&#93;, "\n";
$elemente = $#zahlen; <em># $#zahlen ist die Anzahl der Elemente</em>
print $zahlen&#91;$#zahlen&#93;, \n"; <em># Hinterstes Element</em>

Wenn wir das elfte Element eines Arrays ansprechen wollen, müssen wir $array[10] verwenden und nicht @array[10], weil ein einzelnes Element ja ein Skalar ist! Das Array (10, 11, ("a", "b", "c"), 13) ist in Perl äquivalent zu dem Array (10, 11, "a", "b", "c", 13). Ein einzelnes Element kann also wirklich *niemals* ein Array sein.

Es gibt auch noch einige nette Operationen, die man mit Arrays durchführen kann. Mit push() können Sie etwa ein Element an ein Array anhängen und mit pop() eines abschneiden. Dieses wird dabei natürlich von pop() auch zurückgegeben.

<em>#!/usr/bin/perl</em>
<em># stack.pl -- by W. Jährling</em>
@numbers = (3.14, 5 .. 20, 7.77, 50);
print pop @numbers; <em># 50</em>
$foo = pop @numbers; <em># 7.77</em>
push(@numbers, "Not a number");
pop @numbers;
$foo = pop @numbers; <em># 20</em>

Sie können ein Element mit unshift() am Anfang eines Arrays anfügen und mit shift() eines von dort lesen. Da dies nach dem gleichen Muster wie bei push() und pop() funktioniert, wollen wir hier mal auf ein Beispiel verzichten.


[<< Zurück] [Weiter >>]
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung