From 3cb8ab8c67d443f499b9e55227b21b34b49a910d Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 19 Jan 2010 02:15:32 +0000 Subject: [PATCH] handle empty lists --- lib/Net/OpenSRS.pm | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/lib/Net/OpenSRS.pm b/lib/Net/OpenSRS.pm index 2b74009..b7d8436 100644 --- a/lib/Net/OpenSRS.pm +++ b/lib/Net/OpenSRS.pm @@ -1233,23 +1233,32 @@ sub _format } sub _denastify { - my ($arg) = ( shift ); - if ( ref($arg) eq 'HASH' ) { - my $value; - if ( exists( $arg->{content} ) ) { - $value = $arg->{content}; - } elsif ( exists( $arg->{dt_array} ) ) { - $value = [ map { - { map { _denastify($_) } @{ $_->{dt_assoc} } } - } - @{ $arg->{dt_array} } - ]; - } elsif ( exists( $arg->{dt_assoc} ) ) { - $value = { map { _denastify($_) } @{ $arg->{dt_assoc} } }; + my ($arg) = ( shift ); + + if ( 0 ) { + eval { use Data::Dumper }; + warn $@ if $@; + warn "_denastify\n". Dumper($arg) unless $@; + } + + if ( ref($arg) eq 'HASH' ) { + my $value; + if ( exists( $arg->{content} ) ) { + $value = $arg->{content}; + } elsif ( exists( $arg->{dt_array} ) ) { + my $array = $arg->{dt_array}; + $array = [ $array ] unless ref($array) eq 'ARRAY'; + $value = [ map { + { map { _denastify($_) } @{ $_->{dt_assoc} } } + } + @$array + ]; + } elsif ( exists( $arg->{dt_assoc} ) ) { + $value = { map { _denastify($_) } @{ $arg->{dt_assoc} } }; + } + return ( $arg->{key} => $value ); } - return ( $arg->{key} => $value ); - } - (); + (); } =back -- 2.11.0