Thread hashes of hashes (6 answers)
Opened by hannesPR at 2010-10-01 03:55

renee
 2010-10-01 09:21
#141603 #141603
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Der Fehler liegt in dieser Zeile:
Code (perl): (dl )
  %matrix=($i => { $ii => "X"});
(Zeile 21 in Deinem Code)

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 CPAN: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 Wiki: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/

View full thread hashes of hashes