G'day Sriram,

"When i print just $key, it prints outer hash keys,which is correct i.e productnames."

That doesn't seem right. Have you shown the real code you're using or are you incorrectly reporting the behaviour. With:

foreach my $key ( %${hashref} ){ .... }

Printing $key will give you something like:

product name 1 HASH(0xffffffff) product name 2 HASH(0xffffffff)

You need to start that loop more like this (i.e. include keys):

for my $key (keys %$hashref) {
"But,if i want to extract their corresponding inner hash key and values,Output is showing blank."

To print your "inner" values, you'll need to change lines like this

print $key->{'ProductName'}

to be more like this

print $hashref->{$key}{ProductName};

Another issue is that your subroutine definition, "sub getxml($) {...}", includes a prototype (see "perlsub: Prototypes"). Unless you have a specific reason for using a prototype and really understand why you're using it, I recommend that you remove it, i.e. just use "sub getxml {...}". That's a general recommendation for all of your subroutine definitions, not just this one.

In the previous paragraph I emphasised "really understand why you're using it". I did this because the only call you show to that subroutine, "&getxml($packagehash);", disables prototype checking (which tends to suggest that you don't really understand why you're using it). Again, unless you have a specific reason for doing this and really understand why you're doing it, I recommend that you call your subroutines without a leading ampersand (i.e. in this case, just use getxml($packagehash);). See "perlsub - Perl subroutines" for details.

-- Ken


In reply to Re: Converting HOH to a XML not working by kcott
in thread Converting HOH to a XML not working by sriram83.life

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.