my %struture = ( '1' => { 'field1_statement1' => 'value', 'field2_statement1' => 'value' }, '2.1' => { 'field1_statement2' => 'value', 'field2_statement2' => 'value', 'field3_statement2' => 'value' }, '2.2' => { 'field1_statement2' => 'value', 'field2_statement2' => '', 'field3_statement2' => 'value' }, '3.1' => { 'field1_statement2' => 'value' } ); #### my @statements; my %structure; foreach my $elt ( @statements ) { my @ex = exec($elt); my $i; for (my $y=0;$y<=$#ex;$y++) { my %results_temp = %{$ex[$y]}; my $index = "$i.$y"; foreach my $key (keys %results_temp) { $structure{$index}{$key} = $results_temp{$key}; } } } sub exec { my @param = @_; my ($type, $db, $login, $pwd, $ip) = getDBInfo(); my $dbh = connectDB ($type, $db, $login, $pwd, $ip); my @store; foreach (@param) { my $sth = $dbh->prepare ($_); $sth->execute() || die $sth->errstr; while (my $hash_ref = $sth->fetchrow_hashref) { push @store, $hash_ref; } } return @store; }