package XML::AUTOLOAD; use vars qw($AUTOLOAD); sub new {bless{},shift}; sub DESTROY {} sub AUTOLOAD { my ($self,$attr,@data) = @_; my ($tag) = $AUTOLOAD =~ /:(\w+)$/; my $out = "<$tag"; if (ref $attr eq 'HASH') { $out .= qq| $_="$attr->{$_}"| for keys %$attr; } elsif (defined $attr) { unshift @data,$attr; } $out .= @data ? ">@data" : " />"; } 1; =head1 NAME XML::AUTOLOAD - Generates XML =head1 SYNOPSIS #!/usr/bin/perl use strict; use warnings; my $xml = XML::AUTOLOAD->new; print $xml->xml( $xml->foo({baz => 'qux'}, $xml->bar(0), $xml->baz({foo=>'bar'}), ), $xml->qux, ); =cut