[ { individual => [ 1 .. N ], # N is population size chromasome1 => [ c1_1 .. c1_N ], # c1_x is an int between 0 and 50 chromasome2 => [ c2_1 .. c2_N ], # c2_x is an int between 0 and 50 } { # same hash elements as above, but different N and c* values } { # same hash elements as above, but different N and c* values } ] #### #!/usr/bin/perl use warnings; use strict; use Data::Dumper; my $popCt = 4; my @whole_thing; for (1 .. $popCt) { my ( $c1, $c2 ) = makeArrays( $_ ); push @whole_thing, { chromasome1 => $c1, chromasome2 => $c2 }; } print Dumper(\@whole_thing); sub makeArrays { my ( $counter ) = @_; print "Enter 'lower upper' bounds for population $counter: "; my ($lower, $upper) = split " ", ; my $ranpop = int rand($upper - $lower + 1) + $lower; print $ranpop . "\n"; my $limiter = 50; my @arrA; my @arrB; while ($ranpop) { my $genea = int rand ($limiter); push(@arrA, $genea); my $geneb = int rand ($limiter); push(@arrB, $geneb); $ranpop--; } return \@arrA, \@arrB; }