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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |