xslt.pl: #!/usr/bin/perl use strict; use warnings; use XML::LibXML; use XML::LibXSLT; my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); my $source = $parser->parse_file('tmp.xml'); my $style_doc = $parser->parse_string(< EOT my $stylesheet = $xslt->parse_stylesheet($style_doc); my $results = $stylesheet->transform($source); print $stylesheet->output_string($results); ---------------------------------------------- twig.pl: #!/usr/bin/perl use strict; use warnings; use XML::Twig; my $twig = XML::Twig->new (comments => 'drop', pretty_print => 'indented'); $twig->parsefile("tmp.xml"); $twig->print(); ---------------------------------- expat.pl: #!/usr/bin/perl use strict; use warnings; use XML::Parser::Expat; my $parser = new XML::Parser::Expat; $parser->setHandlers('Start' => \&sh, 'End' => \&eh, 'Char' => \&ch); $parser->parsefile('tmp.xml'); sub sh { my ($p, $e) = @_; print $p->recognized_string(); } sub eh { my ($p, $e) = @_; print $p->recognized_string(); } sub ch { my ($p, $s) = @_; print $s; }