Thread hashes of hashes
(6 answers)
Opened by hannesPR at 2010-10-01 03:55
Der Fehler liegt in dieser Zeile:
Code (perl): (dl
)
%matrix=($i => { $ii => "X"}); Hier erzeugst Du den Hash immer komplett neu. Das heißt, in dem Hash gibt es immer nur einen Wert. Ein super Modul zum debuggen solcher Probleme ist Data::Dumper. Damit kann man Datenstrukturen ausgeben. Mach mal: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 use Data::Dumper; #initialisierung %matrix for ($i=0;$i<20;$i++) { for ($ii=0;$ii<40;$ii++) { %matrix=($i => { $ii => "X"}); print Dumper \%matrix; } } print $matrix{0}{1}; #klappt nicht Die Zeile 21 in Deinem Code müsste so aussehen: Code (perl): (dl
)
$matrix{$i} = { $ii => "X" }; Die for-Schleifen würde ich anpassen, weil der C-style in Perl eher selten benutzt wird. Übrigens kann man auch mit Arrayreferenzen arbeiten, wie Du es hier mit Hashreferenzen machst: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 #initialisierung @matrix my @matrix; for my $first_dim ( 0 .. 19 ) { for my $second_dim ( 0 .. 39 ) { $matrix[$first_dim]->[$second_dim] = "X"; } } print $matrix[0]->[1]; Referenzen sind in Perl extrem wichtig. Man brauchst sie eigentlich täglich. Schau Dir auch mal perlreftut an. Last edited: 2010-10-01 09:22:56 +0200 (CEST) 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/ |