IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Perl - Arrays in Perl



Arrays in Perl

Arrays in Perl werden vorgestellt. Inklusive der Funktionen push, pop, shift, unshift.


Autor: Franz Schaefer (mond)
Datum: 22-02-2002, 20:15:22
Referenzen: man perldata
man perlfunc
Schwierigkeit: Anfänger
Ansichten: 5901x
Rating: 5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Übersicht

einfache perl variablen kenenn wir bereits heute lernen wir "arrays"
weiters hat perl sehr viele funktionen zum manipulieren von textstrings
eingebaut.. davon lernen wir heute "split" und "join" kennen.

angenommen wir haben eine grosse zahl von daten die wir speichern wollen.
wir koennten natuerlich

$name1="bla";
$name2="bli";
...
$name20="blo";

machen. ist aber nicht gerade ideal. daten die wir ueber einen index
ansprechen wollen fasst man am besten in ein array zusammen:

z.b. folgendes programm:

#!/usr/bin/perl -w

@feld=();

$feld[2]="toni";
$feld[1]="anna";
$feld[3]="susi";
$feld[0]="karli";

push @feld,"franzi";

foreach $name (@feld) {
print "name=$name\n";
}

die @feld=(); definiert unser array und weisst als inhalt das leere array
() zu. danach werden die 4 felder des array durch zuweisungen[B mit namen
befuellt. der push befehl haengt an das ende des array noch einen wert an.
(in diesem falle waere das equivalten mit $feld[5]="franzi".)

man beachte: meint man das array als ganzes so schreibt man ein @ vor dem
namen. meint man ein einzelnes feld so schreibt man $ und
dahinter dann eckige klammernund in den ekigen klammern den
index.

die foreach schleife ist eine praktische methode wenn man ueber alle
elemente eines arrays iteriren will. die foreach schleife weist der
variablen $name alle werte aus dem array zu das in klammern dahinter
steht. (gibt man bei foreach keine variable an der die werte zugewiesen
werden sollen so wird dafuer $_ verwendet)

will man bei einem array herausfinden wie hoch der index des letzten
befuellten elements ist so kann man das mit dem ausdruch $#feld

wir koennten also anstelle obiger foreach schleife auch eine for schleife
machen und mitzaehlen:

for($i=0 ; $i <= $#feld ; $i++) {
print "der name ist " , $feld[$i] , "\n";
}

wo push am ende eines arrays einen wert anfuegt nimmt die funktion pop
einen weg:

while ($k=pop @feld) {
print "name ist $k\n";
}

obige schleife gibt damit die namen in verkehrter reihenfolge aus und
loescht das array weil pop ja die emlemente der reihe nach entfernt. der
wert $k ist undefiniert sobald versucht wird vom leeren array nochmal
etwas wegzu-pop-en und damit wird die whileschleife beendet.

aehnlich wie pop arbeitet der befehl "shift" aber shift nimmt die elemente
vom anfang des array weg.

$name=shift @feld;

weist der variablen $name den wert von $feld[0] zu und nummeriert das
array um so das $feld[1] an die stelle von $feld[0] rueckt usw...

das gegenteil zu shift ist "unshift". es fuegt einen wert am anfang des
arrays ein und verschiebt alle werte um eins nach hinten.

zum abschluss lesen wir alle zeilen von STDIN ein und geben sie in
verkehrter reihenfolge versehen mit der index nummer wieder aus:

#!/usr/bin/perl -w

@a=();
while() {
push @a,$_;
}

for($i=$#a ; $i >=0 ; $i-- ) {
print "$i: ",$a[$i];
}

man beachte: da wir kein chomp machen sind in den zeilen noch die \n
mitabgespeichert und wir brauchen beim ausgeben auch kein zusaetzliches
anfuegen. eleganter waere obiges programm natuerlich mit einer while
schleife und einem pop.

ausserdem koennte man den befehl: reverse verwenden der die reihenfolge in
einem array umkehrt.

@verkehrt=reverse @glatt;

ein spezielles array ist das array mit dem namen @ARGV. es enthaelt alle
parameter die dem programm beim aufruf uebergeben wurden.

EXERCISES:

* schreibe ein perl script das alle zeilen von STDIN in ein array einliest
und danach wieder ausgibt. mach die ausgabeschleife einmal mit einem
foreach, einmal mit einem for das ueber alle indexnummern laeuft und
einmal mit einer while schleife die mit shift ein element nach dem
anderen herunterliest.

* schreibe ein perl script das alle parameter mit denen es aufgerufen
wurde nacheinander ausgibt.

______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0