package Scalar_object; sub new { my ($class) = map { ref || $_ } shift; return bless \$_, $class; } package Hash_object; sub new { my ($class) = map { ref || $_ } shift; return bless {}, $class; } package Array_object; sub new { my ($class) = map { ref || $_ } shift; return bless [], $class; } package main; use strict; use warnings; use Test; use XML::Dumper; BEGIN { plan tests => 3 } sub check( $$ ); check "Scalar Object", < Hi Mom XML check "Hash Object", < value1 value2 XML check "Array Object", < foo bar XML # ============================================================ sub check( $$ ) { # ============================================================ my $test = shift; my $xml = shift; my $perl = xml2pl( $xml ); my $roundtrip_xml = pl2xml( $perl ); if( xml_compare( $xml, $roundtrip_xml )) { ok( 1 ); return; } print STDERR "\nTest for $test failed: data doesn't match!\n\n" . "Got:\n----\n'$xml'\n----\n". "Came up with:\n----\n'$roundtrip_xml'\n----\n"; ok( 0 ); }