/blog/perl


substr() in Perl
[76831 mal gelesen]
foreach in Perl
[69404 mal gelesen]
open() - Dateien öffnen in Perl
[64196 mal gelesen]
Arrays in Perl - Besonderheiten
[55298 mal gelesen]
chomp() in Perl
[51723 mal gelesen]
grep - Listen durchsuchen in Perl
[46942 mal gelesen]
split() in Perl - Zeichenketten teilen
[41874 mal gelesen]
push in Perl
[40991 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[30604 mal gelesen]
print in Perl
[27662 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Freitag, 23.2.2007, 10:12:34 Uhr

Arrays in Perl - Besonderheiten


Was ein Array in Perl ist sollte ja hinlänglich bekannt sein.

Es gibt allerdins auch noch einige Besonderheiten, auf die man hier hinweisen könnte:

Anzahl der Elemente eines Arrays
Will man wissen, wie viele Elemente in einem Array vorhanden sind, kann man dies ganz einfach mit:

$anzahl=@array;


feststellen.

Versucht man allerdings ein:

print @array;


so wird NICHT die Anzahl der Elemente ausgegeben, sondern die Array-Elemente selbst.
Ein

print scalar(@array);


funktioniert hingegen wie gewünscht, da explizit darauf hingewiesen wird, einen Skalar, und das ist ja wieder die Anzahl der Elemente, zu erzeugen.

Übrigens:
Ein

print $array[$anzahl];


ist auch ziemlich erfolglos, da die Zählung der Elemente bei Arrays bei 0 anfängt.
Der Wert $anzahl ist also der Wert für das nächste, neue Element!


Letztes Element eines Arrays
Man könnte das letzte Element eines Array so auslesen:

$anzahl=@array;
$letztes=$anzahl-1;
$element=$array[$letztes];


oder auch so:

$element=$array[$#array];


Funktioniert, ist aber etwas umständlich.
Einfacher geht es mit

$element=$array[-1];


Das vorletzte Element wäre entsprechend $array[-2]; usw.

Werte aus Array auslesen
Aus einem Array kann man ja mit

$wert=$array[$element];


auslesen. Beachten Sie dabei die Schreibweise mit dem $ und nicht dem @, also nicht
$wert=@array[$element];
Dieses würde zwar auch funktionieren, da aber ein Skalar den Rückgabewert ergibt, sollte man das $ verwenden, das ja auf einen Skalar hinweist.

Einem Element einen Wert zuweisen
"Normalerweise" fügt man einem Array ja Elemente per push, unshift oder splice hinzu. Aber auch folgendes geht:

@a=("test","test1");
$a[10]="test10";
print join("\n",@a);


Es wird direkt das Element 10 gesetzt, die Elemente 2 - 9 werden als leere Elemente erzeugt.

Alle Elemente eines Arrays ausgeben

Um alle Elemente eines Arrays auszugeben, gibt es verschiedene Möglichkeiten.

Mit for

for ($i=0;$i<@array;$i++){
print "$array[$i]\n";
}



Mit foreach

foreach (@array){
print "$_\n";
}



Mit join

print join("\n",@array);



All die vorgestellten Methoden zeigen alle Elemente eines Arrays an, getrennt durch ein \n.






Kommentare zum Beitrag "Arrays in Perl - Besonderheiten"

Kommentar von any
Dem Autor ist ein kleiner Fehler eingerutscht.
Im Teil: Array ausgeben steht


for ($i=0,$i<@array;$i++){
print "$array[$i]\n";
}


Sollte eigentlich statt Komma in der for-Anweisung ein Semikolo stehen:


for ($i=0;$i<@array;$i++){
print "$array[$i]\n";
}



Kommentar von Admin
Danke für den Hinweis.

Kommentar von Greg
Sehr guter Artikel.

Trifft genau das, was ich gesucht hatte. Vor allem weil die Möglichkeiten kurz und knapp verständlich beschrieben sind und sich nicht über zehn Seiten ziehen ;)

Kommentar von Phil
In Perl lässt sich ein Array einfach mit foreach ausgeben, wenn man keinen Index braucht:


foreach ( @array ){
print $_;
}



siehe: http://www.hidemail.de/blog/foreach-perl.shtml

Kommentar von Perlnoob
Danke ;)
Der Artikel ist echt gut gelungen

Liebe grüße aus Köln.

Kommentar von Dieter
In Perl lässt sich ein Array (noch) einfacher mit for ausgeben, wenn man keinen Index braucht:

print "$_\n" for @array;



Thema: Perl Arrays

Der Beitrag "Arrays in Perl - Besonderheiten" wurde 55299 mal gelesen.

Es wurde 24 x über diesen Beitrag abgestimmt.
Die durchschnittliche Beurteilung liegt bei
1.7 (1 = sehr gut - 6 = grottenschlecht).

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

until in Perl

Fortgeschrittenes beschreiben von Dateien

undef in Perl

LWP::Simple mit timeout-Funktion

Dateien öffnen mit Fehlerabfrage

Perls map, grep und sort - ein alter Beitrag aus dem Internet

Doppelte Elemente aus Array entfernen - Und die Reihenfolge beibehalten!

rindex in Perl - Zeichenketten "von rechts" durchsuchen

Webserver mit Apache, MySQL, Perl und PHP auf Windows-PC simulieren



0.0414860248565674 sec. to build


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Alex2983
Kommentar:
Super. Wenn alle so eine Beschreibung abliefern würden, wäre es ein Traum. Besten Dank
Zum Beitrag


Von: Daniel
Kommentar:
Super Tipp, habe sie jetzt auch gefunden, nur bei mir ist es leider eine 16-stellige Nummer...Was mache ich denn jetzt damit??
Zum Beitrag


Von: Mothman
Kommentar:
Im obigen Kommentar sollten in der Zeile

Zum Beitrag


Von: Mothman
Kommentar:
Mir sind seit heute noch folgende Spezialvariablen bekannt, die hier nicht aufgeführt sind:

Zum Beitrag


Von: Bastian
Kommentar:
Tja, etwas spät. Aber trotzdem.

Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juli 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
3.9.2010

Es ist
10:30:43 Uhr

Ihre IP:
38.107.191.90

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
2056678


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
12345
6789101112
13141516171819
20212223242526
27282930

Impressum