I threw this together to encompass the whole system. Hopefully this provides enough information.
#!/usr/bin/perl -w use strict; use XML::Simple; use Data::Dumper; ### BEGINNING STRUCTURE my %t_type = ( 'a' => { one => {low => 1000, high => 3000, percent => 25}, two => {low => 200,high => 2000, percent => 30}, three => {low => 1000,high => 6000, percent => 40}, four => {low => 300,high => 1800, percent => 35}, five => {low => 10, high => 40, percent => 60}, six => {low => 2, high => 12, percent => 50}, seven => [ {select => 'small',low => 3,high => 3,percent => 30}, ], }, 'b' => { one => {low => 1000, high => 3000, percent => 25}, two => {low => 200,high => 2000, percent => 30}, three => {low => 1000,high => 6000, percent => 40}, four => {low => 300,high => 1800, percent => 35}, five => {low => 10, high => 40, percent => 60}, six => {low => 2, high => 12, percent => 50}, seven => [ {select => 'medium',low => 1,high => 1,percent => 10}, {select => 'large',low => 1,high => 1,percent => 10}, ], }, ); print "\t BEFORE\n"; print "data...\n"; print "$t_type{'b'}{'seven'}[0]->{'select'} \n"; foreach my $item ( @{$t_type{b}{seven}} ) { print "... $item->{'select'}\n"; } print "\n\t AFTER\n"; print "creating file...\n"; my $xsimple = XML::Simple->new(); open(L, ">tt.xml"); print L $xsimple->XMLout(\%t_type, noattr => 1, xmldecl => '<?xml version="1.0"?>', GroupTags => { 'seven' => 'select' } ); close(L); print "reading file...\n"; %t_type = (); my $t_type = XMLin('tt.xml',GroupTags => { 'seven' => 'select' }); %t_type = \$t_type;
%t_type = \$t_type;
How do I dereference back into the original structure? So I can access it the same way?
### lets test that returned structure # yep its the same. must be a referrence problem? print "dumping structure...\n"; print Dumper($t_type);
It appears to print the original hash except for the $VAR1 not being $t_type.
Then try to print it the same as before but doesn't work.
print "data...\n"; print "$t_type{'b'}{'seven'}[0]->{'select'} \n"; foreach my $item ( @{$t_type{b}{seven}} ) { print "... $item->{'select'}\n"; }
What do I need to do?

In reply to Re^2: perl and xml by arcnon
in thread perl and xml by arcnon

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.