Schrift
[thread]8782[/thread]

Hash mit Arrays als Wert aufbauen

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Pida
 2007-02-22 15:30
#74499 #74499
User since
2006-06-09
52 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich möchte einen Hash aufbauen, dessen Keys Skalare (Integer-Zahlen) und dessen Werte Arrays sein sollen.
Dazu habe ich eine Schleife, in der u.a. Folgendes steht:

Code: (dl )
$liste{$index} = @pro;

Die vorhandenen Variablen sind also %liste, $index und @pro.
Das funktioniert aber nicht. Statt des tatsächlichen Arrays wird offensichtlich die Anzahl der Elemente desselben zugewiesen.
Gebe ich den Hash aus, erhalte ich daher Resultate wie "1 3" statt "1 Emil Willi Otto".

Was muss ich ändern?

Vielen Dank, Pida
docsnyder
 2007-02-22 15:33
#74500 #74500
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ein Array im scalaren Kontext evaluiert zur Arraygrösse.

Du musst eine Array-Referenz zuweisen:
Code: (dl )
$liste{$index} = \@pro;

Gruss, Doc
Pida
 2007-02-22 15:36
#74501 #74501
User since
2006-06-09
52 Artikel
BenutzerIn
[default_avatar]
Danke,

leider klappt auch das nicht. Das Resultat der Ausgabe des Hashes sieht jetzt so aus:
Code: (dl )
2 ARRAY(0x225d34)

Pida
docsnyder
 2007-02-22 15:50
#74502 #74502
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn Du dem Hash eine Array-Referenz zuweist, musst Du sie beim Zugriff auch wieder dereferenzieren:

Code: (dl )
@{$liste{$index}}

Gruss, Doc
Pida
 2007-02-22 15:58
#74503 #74503
User since
2006-06-09
52 Artikel
BenutzerIn
[default_avatar]
Leider läuft es so noch nicht... ich habe mal etwas mehr Code angefügt:
Code: (dl )
1
2
3
4
5
6
7
$liste{$index} = \@pro;

...

while ((my $index, my $satz) = each %liste) {
print "$index $satz}}\n";
}


Jetzt habe ich oben die Referenz und müsste m.E. beim print die Variable $satz dereferieren.
Tue ich das aber nach deinem Beispiel, gibt es eine Fehlermeldung...

Danke, Pida
Pida
 2007-02-22 16:02
#74504 #74504
User since
2006-06-09
52 Artikel
BenutzerIn
[default_avatar]
Oh, mein (Tip-) Fehler. Das Problem scheint gelöst.

Danke, Pida
vayu
 2007-02-22 16:07
#74505 #74505
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

my @pro = qw(1 2 3);
my %hash = ();
$hash{'a'} = \@pro;

foreach my $key (keys %hash) {
print $_."\n" foreach(@{$hash{$key}});
}
\n\n

<!--EDIT|vayu|1172153265-->
xtomcatx
 2007-02-22 16:15
#74506 #74506
User since
2006-08-27
31 Artikel
BenutzerIn
[default_avatar]
Ich liebe es, wenn Fragen in mehreren Foren gestellt werden, man sich die Mühe macht, zu antworten und dann sieht, dass das Problem auch wo anders schon gelöst wurde *argh*
http://perlboard.de/cgi-bin....9&ant=1
vayu
 2007-02-22 16:28
#74507 #74507
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hehe, das sind die Leute die nicht abwarten können ...
Strat
 2007-02-22 16:34
#74508 #74508
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
xtomcatx: hast du nicht lust, was fuer's neue Forum zu schreiben, was Fragen, die schon in anderen Foren gestellt wurden, speziell markiert? ;-)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2007-02-22 15:30.