my $ref2 = SOAP::Data->name( evenmorewierd => \SOAP::Data->name( moredata => 4 ) ); my $ref1 = SOAP::Data->name(wierd => [ \SOAP::Data->name( someotherdata => 10 ), \$ref2 ]); my @data = ( SOAP::Data->name( test1 => [ \SOAP::Data->name( data => 2 ), \$ref1 ]), \$ref1, \$ref2, ); my $soap = SOAP::Serializer->new(); print $soap->serialize( \@data );