Thread Maps in Arrays (6 answers)
Opened by Blub at 2013-08-19 20:45

Raubtier
 2013-08-20 08:17
#169655 #169655
User since
2012-05-04
1076 Artikel
BenutzerIn
[default_avatar]
Guest Blub
Hi,

bin recht neu in perl und habe ein Problem mit den Datentypen.
Genauer gesagt mit Arrays, die als Elemente Maps haben.

Code (perl): (dl )
1
2
@all[0] = %m1;
@all[1] = %m2;


Das hier: @all[0] ist ein Array-Slice (also vergleichbar mit @a[0..0] - wenn du z.B. @a[0..2] schreibst, ist das ein Slice auf die ersten 3 Elemente). Wichtig ist, dass ein Array-Slice selbst ein Array ist. Also wird die rechte Seite im Listenkontext ausgewertet. Ein Hash (wie Maps in Perl genannt werden - wenn du von C++ kommt, würde ich eher std::unordered_map sagen) im Listenkontext liefert seine Key/Values nacheinander - Key+Value immer die zusammengehörenden hintereinander, aber die Reihenfolge der Key-Value-Paare ist nicht festgelegt und kann sich auch pro Programmstart unterscheiden.

Minimalbeispiel:
perl -E'%hash = qw(key1 value1 key2 value2);say for %hash;'

Das ist so seit Version 5.18: http://search.cpan.org/dist/perl-5.18.0/pod/perlde...

Wie die anderen geschrieben haben: das Array-Element ist ein Skalar, also $a[0], dem du dann eine Hash-Referenz zuweisen musst. Siehe vielleicht auch Perldoc:perllol oder Perldoc:perldsc.
Last edited: 2013-08-20 08:24:08 +0200 (CEST)

View full thread Maps in Arrays