/blog/perl


substr() in Perl
[123498 mal gelesen]
foreach in Perl
[113463 mal gelesen]
Arrays in Perl - Besonderheiten
[105801 mal gelesen]
open() - Dateien öffnen in Perl
[95725 mal gelesen]
split() in Perl - Zeichenketten teilen
[84207 mal gelesen]
chomp() in Perl
[82399 mal gelesen]
grep - Listen durchsuchen in Perl
[79675 mal gelesen]
push in Perl
[75572 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[58996 mal gelesen]
print in Perl
[48515 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 105802 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

Wiederholungen finden mit regulären Ausdrücken

Mails versenden mit Perl - Sendmail

Alle Dateien eines Verzeichnisses löschen - Aber bitte mit Ausnahmen!

Unicode mit Perl - Einfache (?) Anwendung

Vorrausschauende und zurückblickende Suche mit regulären Ausdrücken

reverse in Perl()

Vordefinierte Variablen in Perl

lc() in Perl - Alle Buchstaben in Kleinbuchstaben umwandeln

Cookies mit Perl



0.0445079803466797 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: 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


Von: Sammy
Kommentar:
wie lautet denn die syntax wenn ich eine perl datei in einer perl datei öffnen will. also hier steht ja "|datei: " muss ich da noch ein ".pl" anhängen oder nicht?
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
20.2.2018

Es ist
4:10:30 Uhr

Ihre IP:
50.19.34.255

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3594662


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
1234
567891011
12131415161718
19202122232425
262728

Impressum