##
$VAR1 = {
'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Calculator'
};
$VAR1 = {
'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Budget'
};
$VAR1 = {
'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Account'
};
####
my $source = getHash();
my %container;
tie %container,'Tie::IxHash';
walkHash($source, \%container);
sub walkHash
{
my $h = shift;
my $container = shift;
foreach my $key (keys %$h)
{
if($key ne 'Leaf' && ref $h->{$key} )
{
$container->{KEYS} = "$container->{KEYS}/$key"
if(exists $container->{KEYS});
$container->{KEYS} = $key
unless(exists $container->{KEYS});
walkHash($h->{$key}, $container);
}
else
{
#Process hash under 'LEAF' key here.
print Dumper($container);
}
}
}
sub getHash
{
my %hash =
(
'APPLICATION_SERVER' =>
{
'SERVICE_LIST' =>
{
'Account' =>
{
'Leaf' =>
{
'EXECUTION' =>
{
'VALUE' => 'EMPTY'
},
'MODULE' =>
{
'VALUE' => 'w.exe'
},
'APPLICATION' =>
{
'VALUE' => 'EMPTY',
'Id' => 'Account',
'Parent' => 'w.default'
},
'PATH' =>
{
'VALUE' => '$(res.home)acc'
}
}
},
'Calculator' =>
{
'Leaf' =>
{
'EXECUTION' =>
{
'VALUE' => 'EMPTY'
},
'MODULE' =>
{
'VALUE' => 'x.exe'
},
'APPLICATION' => {
'VALUE' => 'EMPTY',
'Id' => 'Calculator',
'Parent' => 'w.default'
},
'PATH' => {
'VALUE' => '$(res.home)$(res.slash)cal'
}
}
},
'Budget' =>
{
'Leaf' =>
{
'EXECUTION' => {
'VALUE' => 'EMPTY'
},
'MODULE' => {
'VALUE' => 'w.exe'
},
'APPLICATION' => {
'VALUE' => 'EMPTY',
'Id' => 'Budget',
'Parent' => 'w.default'
},
'PATH' => {
'VALUE' => '$(res.appl)$(res.slash)bud'
}
}
},
}
}
);
return \%hash;
}