Thread Arrays of Hashes / Hashes of Hashes (5 answers)
Opened by hansi66 at 2010-11-18 16:59

renee
 2010-11-18 17:22
#142852 #142852
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2010-11-18T15:59:53 hansi66
Hallo zusammen, bin neu im Forum und Frischling im Perl Umfeld....
Dann herzlich Willkommen in dieser Runde...

Quote
Problem 1) Das klappt leider nicht...weil die Hashes ja nur als Referenzen abgelegt werden...oder sehe ich da was falsch!?
Nein, das siehst Du richtig.

Quote
Code: (dl )
1
2
3
4
5
6
my $dateiname = "/bla/bla/bla/steuerdatei.cfg";
my $file = "/bla/bla/bla/fileMitDatensätzen.csv";

open (INP,"<$dateiname");
my @Keys = <INP>; #Steuerdatei
close INP;
Zu dieser Art, "open" zu benutzen, solltest Du Dir das hier mal anschauen: http://reneeb-perlblog.blogspot.com/2009/09/versch...

Quote
Code (perl): (dl )
1
2
3
4
5
my %hash= ();
my $i = 0;
my $j = 0;
my $k = 0;
for (my $i=1; $i<(@Values)-1; $i++){            #Vor- & Schlusssatz abschneiden


Solche Schleifenköpfe schreibt man in Perl eher so:

Code (perl): (dl )
for ( 1 .. $#Values ) {


Dann erkennt man gleich, dass es um eine Zahlenreihe geht. Mit $#Arrayname bekommst Du den Index des letzten Elements.

Quote
Code (perl): (dl )
1
2
3
4
5
6
7
        for(@Keys){
                $hash{ $Keys[$j++] } = $valueX[$k++];
        }
        $j= 0; $k = 0;
        push @AoH, \%hash;
        #$AoH[($i)-1] = \%hash;
}


Hier fügst Du immer eine Referenz auf den selben Hash hinzu. Da Du immer mit dem Hash arbeitest, den Du vor der Schleife deklariert hast, überschreibst Du den immer.

Also das my %hash = (); vor der Schleife wegnehmen. Das dann in der Schleife wieder einfügen. Dann wird bei jedem Schleifendurchlauf eine neue Variable erzeugt.

Also
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
for my $i ( 1 .. $#Values ){        #Vor- & Schlusssatz abschneiden
    my %hash;

    my @valueX = split(/\|/, $Values[$i]);

    for my $j ( 0 .. $#Keys){
        $hash{ $Keys[$j] } = $valueX[$j];
    }

    push @AoH, \%hash;
}
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/

View full thread Arrays of Hashes / Hashes of Hashes