Font
[thread]8420[/thread]

hash von arrays



<< >> 2 entries, 1 page
Noisebreath
 2006-10-16 18:37
#70803 #70803
User since
2006-04-14
72 articles
BenutzerIn
[default_avatar]
hi

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my %childtables;
foreach my $child (@{$ele->child()}){
my @arr;
if($childtables{${$ele->doc_type()}}[0]) { #line 215
@arr = @childtables{${$ele->doc_type()}};
}

push(@arr,$child);

@childtables{${$ele->doc_type()}} = @arr;
}


Fehler: "Cant use undefined value as scalar reference at line 215"

Ich denk ich mach irgendwie was mit der Zuweisung falsch.
Ich will dynamisch einen hash von arrays erstellen und irgendwie krieg ich das nicht hin.

Falls an der Stelle ${$ele->doc_type()}} des hashes noch kein array existiert, soll einer angelegt werden.
ansonsten möchte ich den vorhandenen array um ein element ($child) erweitern.

danke im voraus
topeg
 2006-10-16 22:23
#70804 #70804
User since
2006-07-10
2611 articles
BenutzerIn

user image
müßte die Stelle:
Code: (dl )
$childtables{${$ele->doc_type()}}[0]

nicht so heißen:
Code: (dl )
$childtables{ $ele->doc_type() }[0]

Denn das ist seltsam:
Code: (dl )
${ $ele->doc_type() }

Warum willst du da eine Referenz auf einen Skalar auflösen?

aber der ganze Code ist seltsam. du wechslst von einem Hash zu einem Array, das geht zwar macht aber hier keinen Seinn, nach deiner Beschreibung. Ich denke du willst sowas machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my %childtables;
foreach my $child ( @{ $ele->child() } )
{
if( ref( $childtables{ $ele->doc_type() } ) ne "ARRAY" )
{
$childtables{ $ele->doc_type( ) }=[ $child ];
}
else
{
push( @{ $childtables{ $ele->doc_type() } }, $child );
}
}
<< >> 2 entries, 1 page



View all threads created 2006-10-16 18:37.