/blog/perl


substr() in Perl
[126362 mal gelesen]
foreach in Perl
[115653 mal gelesen]
Arrays in Perl - Besonderheiten
[108541 mal gelesen]
open() - Dateien öffnen in Perl
[97360 mal gelesen]
split() in Perl - Zeichenketten teilen
[87839 mal gelesen]
chomp() in Perl
[84032 mal gelesen]
grep - Listen durchsuchen in Perl
[81364 mal gelesen]
push in Perl
[78015 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[60732 mal gelesen]
print in Perl
[49491 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 108542 mal gelesen.

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

Hash Slices - Was ist das?

Bestimmte Dateien eines Ordners suchen - Aus der Praxis - Suchen nach Dateiendung

LWP::Simple mit timeout-Funktion

rename in Perl - Dateien umbenennen

each() in Perl - Wertepaare aus Hash auslesen

getc - Nächstes Zeichen aus Datei lesen

utime - Zeitstempel von Dateien oder Verzeichnissen ändern in Perl

tell - Die Position eines Dateizeigers ermitteln

rindex in Perl - Zeichenketten "von rechts" durchsuchen



0.0217790603637695 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
21.6.2018

Es ist
15:14:26 Uhr

Ihre IP:
54.80.198.173

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3669940


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
123
45678910
11121314151617
18192021222324
252627282930

Impressum