sub decode_obj { my ( $in ) = @_; my $out; my @stack=([$in,\$out]); while(@stack) { my ($old,$new) = @{ shift @stack }; if(ref $old eq 'ARRAY') { push(@stack,[ $old->[$_], \$$new->[$_] ]) for (0..$#$old); } elsif(ref $old eq 'HASH') { push(@stack,[ $old->{$_}, \$$new->{$_} ]) for (keys %$old); } else { $$new = Encode::encode( 'ISO-8859-15', $old ); } } return $out; }