Thread Als Value eines Hashes will ich ein Array mitgeben (3 answers)
Opened by krusty at 2007-09-15 12:01

Linuxer
 2007-09-15 12:31
#99484 #99484
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hast Du denn eine Idee, was Du mit "funktioniert leider nicht" meinst?

Auf den ersten Blick ist zu erkennen, dass Du @achsen ausserhalb der Schleife deklarierst. Dadurch nutzt Du bei der Zuweisung immer die gleiche Speicheradresse und @achsen wird immer wieder neu überschrieben.

Ich würde folgendes vorschlagen, so kannst Du Dir @achsen sogar ganz sparen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
my %order       = ();
my $screenid    = "";
my @yx          = ();

while( my @erg = $sth->fetchrow_array)
{
        $order{$erg[0]} =  [ @erg[1,2] ];
}


Ansonsten musst Du @achsen entweder in der Schleife deklarieren:
Code (perl): (dl )
1
2
3
4
while ( bla ) {
  my @achsen = ( blubb );
  $order{$erg[0]} = \@achesn;
}


Oder Du nutzt eine Referenz auf ein anonymes Array:
Code (perl): (dl )
1
2
3
4
while ( bla ) {
  @achsen = ( blubb );
  $order{$erg[0]} = [ @achsen ];
}


Was mir sonst noch so aufgefallen ist:

Auf ein Element eines Hash greifst Du mit $hash{key} zu, nicht mit %hash{key}.

Du brauchst die Variable, die den Hash-Key benennt, nicht in "" setzen: also $order{$erg[0]}

Es ist Dir dringendst angeraten "use strict;" und "use warnings;" im Skript zu benutzen.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Als Value eines Hashes will ich ein Array mitgeben