use strict;
use warnings;
use Data::Dumper;
my %main = ( 'main1' => {'m1sec1'=> ['A','B','C'],},
'main2' => {'m2sec1'=> ['D','E','F'],},);
my %seed = ( 'seed' => {'seed1'=> ['X','Y','Z']},);
# Keep output seperate for now to
# avoid treating outputs as inputs.
my %joined;
foreach my $sd ( keys %seed )
{
foreach my $sdsub ( sort keys %{$seed{$sd}} )
{
foreach my $valseed ( @{$seed{$sd}{$sdsub}} )
{
foreach my $mn ( keys %main )
{
foreach my $msec ( sort keys %{$main{$mn}} )
{
# Create hash if it doesn't exist.
$joined{$mn."-join"} ||= {};
# Create array if it doesn't exist.
$joined{$mn."-join"}{$msec} ||= [];
my $store = $joined{$mn."-join"}{$msec};
foreach my $valmain( @{$main{$mn}{$msec}} )
{
push @$store, $valmain.$valseed;
}
}
}
}
}
}
# Combine inputs and outputs.
%main = (%main, %joined);
print Dumper \%main ;
####
use strict;
use warnings;
use Data::Dumper;
my %main = ( 'main1' => {'m1sec1'=> ['A','B','C'],},
'main2' => {'m2sec1'=> ['D','E','F'],},);
my %seed = ( 'seed' => {'seed1'=> ['X','Y','Z']},);
foreach my $mn ( keys %main )
{
my $joined = $main{"$mn-join"} = {};
foreach my $msec ( sort keys %{$main{$mn}} )
{
my $store = $joined->{$msec} = [];
foreach my $valmain( @{$main{$mn}{$msec}} )
{
foreach my $sd ( keys %seed )
{
foreach my $sdsub ( sort keys %{$seed{$sd}} )
{
foreach my $valseed ( @{$seed{$sd}{$sdsub}} )
{
push @$store, $valmain.$valseed;
}
}
}
}
}
}
print Dumper \%main ;
####
use strict;
use warnings;
use Data::Dumper;
my %main = ( 'main1' => {'m1sec1'=> ['A','B','C'],},
'main2' => {'m2sec1'=> ['D','E','F'],},);
my %seed = ( 'seed' => {'seed1'=> ['X','Y','Z']},);
my @seed; # Flattened %seed.
foreach my $sd ( keys %seed )
{
foreach my $sdsub ( sort keys %{$seed{$sd}} )
{
push @seed, @{$seed{$sd}{$sdsub}};
}
}
foreach my $mn ( keys %main )
{
my $joined = $main{"$mn-join"} = {};
foreach my $msec ( sort keys %{$main{$mn}} )
{
my $store = $joined->{$msec} = [];
foreach my $valmain( @{$main{$mn}{$msec}} )
{
foreach my $valseed ( @seed )
{
push @$store, $valmain.$valseed;
}
}
}
}
print Dumper \%main ;