Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: Forcing to anonymous array in XML::simple

by rbi (Monk)
on Dec 14, 2006 at 16:47 UTC ( #589860=note: print w/ replies, xml ) Need Help??


in reply to Re: Forcing to anonymous array in XML::simple
in thread Forcing to anonymous array in XML::simple

Thank you.
I have one more question. I tested more pairs in the hash and the option noattr=>1 (that I realized I need to use). When I run:

use strict; use warnings; use XML::Simple;use Data::Dumper; my $file = './test.xml'; my %tmp = ( A => [ [1] ], B => 1); XMLout(\%tmp,outputfile=>$file,noattr=>1); %tmp = %{XMLin($file,forcearray=>['A'],noattr=>1)}; warn Dumper(\%tmp); %tmp = %{XMLin($file,forcearray=>1,noattr=>1)}; warn Dumper(\%tmp);
I get:
$VAR1 = { 'A' => [ { 'anon' => '1' } ], 'B' => '1' }; $VAR1 = { 'A' => [ [ '1' ] ], 'B' => [ '1' ] };
is it correct that I cannot get A value as array and B value as scalar ?, i.e.:
$VAR1 = { 'A' => [ [ '1' ] ], 'B' => '1' };


Comment on Re^2: Forcing to anonymous array in XML::simple
Select or Download Code
Re^3: Forcing to anonymous array in XML::simple
by grep (Monsignor) on Dec 14, 2006 at 18:03 UTC
    Yes, B will also be forced into a 1 element array (with ForceArray => 1). But IMO that is the way it should be. It's consistant.

    grep
    1)Gain XP 2)??? 3)Profit

      Thanks. I'm trying to cope in a general way with these situations:
      use strict; use warnings; use XML::Simple;use Data::Dumper; my $file = './test.xml'; my $a = ['x','y']; my $a1 = [$a]; my %tmp = ( A =>$a1, B => 'z'); XMLout(\%tmp,outputfile=>$file,noattr=>1); %tmp = %{XMLin($file,forcearray=>['A'],noattr=>1)}; print "----------\n"; print $tmp{B}."\n"; print $tmp{A}[0]->[0]."\n"; $a = ['x']; $a1 = [$a]; %tmp = ( A =>$a1, B => 'z'); XMLout(\%tmp,outputfile=>$file,noattr=>1); %tmp = %{XMLin($file,forcearray=>1,noattr=>1)}; print "----------\n"; print $tmp{B}."\n"; print $tmp{A}[0]->[0]."\n"; $a = ['x']; $a1 = [$a]; %tmp = ( A =>$a1, B => 'z'); XMLout(\%tmp,outputfile=>$file,noattr=>1); %tmp = %{XMLin($file,forcearray=>['A'],noattr=>1)}; print "----------\n"; print $tmp{B}."\n"; print $tmp{A}[0]->[0]."\n";
      That outputs:
      ---------- z x ---------- ARRAY(0x653930) x ---------- z Not an ARRAY reference at tmp1.pl line 31.
      I can only think of evaluating ref($tmp{A}) and ref($tmp{B}) to decide how to operate, since in my code $tmp{A} is an array reference to an array that can have a single element made by an array reference to a single-element array itself, and $tmp{B} is instead a scalar. I guess I'm missing something...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://589860]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (7)
As of 2014-11-27 11:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (184 votes), past polls