module1 ..... ..... sub passMe{ my @data=(); push(@data, { %params, %extend_params, %basics, %annotations, %navigator, position => 'annotations', sid => $sid, navigator_link => '[brief]', annotations_detail_link => q|[ experiment details]|, template => $tmpl }); return \@data, $ID; } module2 sub report { my ($aa, $bb)= &passMe; while ( my ($key, $val) = each( %{$aa}) ) { while ( my ($key1, $value) = each(%{$key}) ) { print "$key1 => $value\n"; } } }