Hi,
I am trying to process source hash and build the container hash
The output of container hash looks like this,
$VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Calculator' }; $VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Calculator/Budget +' }; $VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Calculator/Budget +/Account' };
But I want the container hash to look like this,
$VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Calculator' }; $VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Budget' }; $VAR1 = { 'KEYS' => 'APPLICATION_SERVER/SERVICE_LIST/Account' };

Can any one suggest me how can this be done? Below I have attached my code.Thanks,
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; }

In reply to Process hash by tart

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.