in reply to Hash of Hash Redux
It only populates the hash with #4.
That's because you do
@populations = (4);
Now you what do you have in @populations? Exactly one element, the 4. You iterate over that, and the loop is executed once setting $_ to 4.
Inside your loop, you do
%HoH = ( @populations => { individual => "@ind", chromasome1 => "@chroma", chromosome2 => "@chromb", }, );
which resets %HoH at each pass. Well, it would, if you had more than one element in @populations.
I guess you mean something like
use strict; use warnings; use Data::Dumper; @populations = qw(mice cats dogs potatoes); my %hash = gener(@populations); sub gener { my @populations = @_; my %HoH; for (@populations) { my @chroma = (0...10); my @chromb = (0...10); my @ind = (0...10); $HoH{$_} = { individual => \@ind, chromasome1 => \@chroma, chromosome2 => \@chromb, }; } foreach my $population ( sort keys %HoH ) { + foreach my $info ( sort keys %{ $HoH{$population} } ) { + print "$population: $info = ", join(', ', @{$HoH{$population}{$info}}),"\n"; } } print Dumper(%HoH); return %HoH; # returned as list; to returna ref, use \%HoH }
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
|
|---|