/blog/perl


substr() in Perl
[152051 mal gelesen]
foreach in Perl
[128608 mal gelesen]
Arrays in Perl - Besonderheiten
[124373 mal gelesen]
split() in Perl - Zeichenketten teilen
[112384 mal gelesen]
open() - Dateien öffnen in Perl
[108444 mal gelesen]
grep - Listen durchsuchen in Perl
[93977 mal gelesen]
chomp() in Perl
[93144 mal gelesen]
push in Perl
[90345 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[75406 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[58647 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;

Kommentar von Roman
Super, danke für die Tipps. Guter Artikel!



Thema: Perl Arrays

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

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

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

values() - Alle Werte eines Hashes ermitteln

Befehle, die standartmäßig $_ verwenden, und solche, die das nicht tun

Reguläre Ausdrücke - Klammerung und gespeicherte Werte

Elemente eines Arrays in einem Hash löschen - Die schnelle Methode

Transform a website to unicode

Reguläre Ausdrücke

Schande über mich - Ich habe PHP benutzt

undef in Perl

Permanent redirect 301 - Wie leite ich eine Seite um?

Mein HTPC - Weitere Erfahrungen



0.0225059986114502 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


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

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


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
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
8.12.2023

Es ist
13:57:25 Uhr

Ihre IP:
34.229.63.28

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4375507


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



Impressum