Thread Daten "Hashen"?
(14 answers)
Opened by gmafx at 2010-11-25 22:39 2010-11-27T21:09:38 gmafx @{ ... } erzwingt ein Array Kontext (push erwartete ein Array als erstes Argument), es wird erstellt wenn es noch nicht existiert (das ist dann die Autovivikation) 2010-11-27T21:09:38 gmafx Umgeschrieben: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 my @value=@{$v}; for my $pos_in_value (0..$#value) { print " col $pos_in_value: "; my $array_ref=$value[$pos_in_value] my @colomns=@{$array_ref}; print join( ', ', @colomns); print "\n"; } Ich hoffe das ist besser zu verstehen 2010-11-27T21:09:38 gmafx wenn du ein array hast (@array) gibt das die Position des letzten Eintrags an ($#array). Wenn du eine Arrayrefenz hast muss man den passenden Kontext erzwingen ($#{$array_ref} das kann man in dem Fall auch kürzer schreiben: $#$array_ref da klar ist was gemeint ist.) 2010-11-27T21:09:38 gmafx als Beispiel: Von einer ID die erste spalte und davon den ersten Eintrag haben: Code (perl): (dl
)
my $value=$elements{$id}->[0]->[0] du willst dir zu allen IDs ein Liste der zweiten spalten Ausgeben lassen: Code (perl): (dl
)
1 2 3 4 5 for my $id (keys(%elements)) { my @values=@{$elements{$id}->[1]} print "$id -> Col1: @values\n"; } Bei perldoc perlreftut und perldoc perlref oder perlreftut und perlref findest du mehr hilfe. 2010-11-27T21:09:38 gmafx Meinst du so ein Zugriff?: Code (perl): (dl
)
$first_value=$elements{$id}->{col1}->[0] Code (perl): (dl
)
push @{ $elements{$id}->{"col$_"} }, $words[$_] for 0 .. $#words; und die veränderte Ausgabe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 my %colomns=%{$v}; for my $col_name (sort keys(%colomns)) { print " $col_name: "; my $array_ref=$colomns{$col_name}; my @entrys=@{$array_ref}; print join( ', ', @entrys); print "\n"; } |