Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11254[/thread]

Key für verschachtelte Hash

Leser: 2


<< >> 5 Einträge, 1 Seite
Hagen
 2008-02-06 13:06
#105625 #105625
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

in meine Programm nutzte ich einen verschachtelten Hash. Nun wollte ich mir alle Keys ausgeben, nur irgendwie schaffe ich das nicht für die 'inneren' Hash:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use strict;
my %daten;

$daten{feld1}{Wert1} = "Inhalt 1 1";
$daten{feld1}{Wert2} = "Inhalt 1 2";
$daten{feld1}{Wert3} = "Inhalt 1 3";

$daten{feld2}{Wert1} = "Inhalt 2 1";
$daten{feld2}{Wert2} = "Inhalt 2 2";
$daten{feld2}{Wert3} = "Inhalt 2 3";

$daten{feld3}{Wert1} = "Inhalt 3 1";
$daten{feld3}{Wert2} = "Inhalt 3 2";
$daten{feld3}{Wert3} = "Inhalt 3 3";

while (my ($Name1, $Wert1) = each %daten){ 
        print "$Name1, $Wert1\n"; 
        
        while (my ($Name2, $Wert2) = each $Wert1) { 
                print "$Name2, $Wert2\n"; 
                } # while
        } # while


Die Schleife in Zeile 16 funktioniert problemlos, hier erhalte ich als Ergebnis z.B.
Code: (dl )
feld1, HASH(0x155520c)
.

Aber wie kann ich mir die Keys von diesem (innerem) Hash anzeigen lassen? Der Ansatz in Zeile 19 ist leider fehlerhaft ($Wert1 ist kein Hash).

Gruß

Hagen
Gruß
Hagen
GwenDragon
 2008-02-06 14:05
#105629 #105629
User since
2005-01-17
14563 Artikel
Admin1
[Homepage]
user image
$Wert1 ist eine Referenz auf einen Hash.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

renee
 2008-02-06 14:56
#105637 #105637
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zum Thema Referenzen lohnt es sich perlreftut durchzulesen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-02-06 19:52
#105653 #105653
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use strict;
use warnings;

my %daten;

$daten{feld1}{Wert1} = "Inhalt 1 1";
$daten{feld1}{Wert2} = "Inhalt 1 2";
$daten{feld1}{Wert3} = "Inhalt 1 3";

$daten{feld2}{Wert1} = "Inhalt 2 1";
$daten{feld2}{Wert2} = "Inhalt 2 2";
$daten{feld2}{Wert3} = "Inhalt 2 3";

$daten{feld3}{Wert1} = "Inhalt 3 1";
$daten{feld3}{Wert2} = "Inhalt 3 2";
$daten{feld3}{Wert3} = "Inhalt 3 3";

for my $Name1 (keys(%daten)){

        my $Wert1=$daten{$Name1};
        print "-> $Name1\n"; 
 
       if(ref($Wert1) eq 'HASH'){
              for my $Name2 (keys(%{$Wert1})) {
                     my $Wert2 = $Wert1->{$Name2};
                     print "--> $Name2, $Wert2\n"; 
              }
        }
}
Hagen
 2008-02-06 23:22
#105670 #105670
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Danke! Habe vieles ausprobiert, aber irgendwie bin ich nicht darauf gekommen, dass es sich um eine Referenz handeln könnte :-(
Gruß
Hagen
<< >> 5 Einträge, 1 Seite



View all threads created 2008-02-06 13:06.