/blog/perl


substr() in Perl
[129285 mal gelesen]
foreach in Perl
[117673 mal gelesen]
Arrays in Perl - Besonderheiten
[110972 mal gelesen]
open() - Dateien öffnen in Perl
[98863 mal gelesen]
split() in Perl - Zeichenketten teilen
[91385 mal gelesen]
chomp() in Perl
[85611 mal gelesen]
grep - Listen durchsuchen in Perl
[82861 mal gelesen]
push in Perl
[80103 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[62679 mal gelesen]
print in Perl
[50513 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 110973 mal gelesen.

Es wurde 38 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

Gefälschte Mail von Google enthält Trojaner

Perl in PHP einbinden

Nochmal Dateien suchen - diesmal auch in Unterverzeichnissen

Kuriose Reguläre Ausdrücke

grep - Listen durchsuchen in Perl

Zugriff auf bestimmte Webseiten sperren unter Windows XP

Links finden - Links testen - Backlink überwachen

index() in Perl - Zeichenkette in Zeichenkette suchen

Ein PHPBB-Foum auf einen anderen Server umziehen

Hash of Arrays - Oder: Wie bilde ich ein Hash aus Arrays?



0.0161049365997314 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
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Fabian
Kommentar:
Hallo zusammen,
ich suche schon etwas im Internet und bin bisher nicht fündig geworden.
Zum Beitrag


Von: Schorschel eastcoast
Kommentar:
Danke. Das hat mir weitergeholfen.
Zum Beitrag


Von: Jessica
Kommentar:
Kann man auch zwei Datein parallel einlesen?

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

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


Mister Wong

RSS-Feed

Heute ist der
16.12.2018

Es ist
7:24:50 Uhr

Ihre IP:
54.82.10.219

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3753401


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
12
3456789
10111213141516
17181920212223
24252627282930
31

Impressum