#expat.pl #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $started = [gettimeofday]; END {print STDERR tv_interval($started),"\n";} 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; } __END__ #expat2.pl #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $started = [gettimeofday]; END {print STDERR tv_interval($started),"\n";} use XML::Parser::Expat; my $parser = new XML::Parser::Expat; $parser->setHandlers('Start' => \&sh, 'End' => \&eh, 'Char' => \&ch); $parser->parsefile('tmp.xml'); sub sh { print $_[0]->recognized_string(); } sub eh { print $_[0]->recognized_string(); } sub ch { print $_[1]; } __END__ #twig.pl #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $started = [gettimeofday]; END {print STDERR tv_interval($started),"\n";} use XML::Twig; my $twig = XML::Twig->new (comments => 'drop', pretty_print => 'indented'); $twig->parsefile("tmp.xml"); $twig->print(); __END__ #twig2.pl #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $started = [gettimeofday]; END {print STDERR tv_interval($started),"\n";} use XML::Twig; my $twig = XML::Twig->new (comments => 'drop'); $twig->parsefile("tmp.xml"); $twig->print(); __END__ #xslt.pl #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $started = [gettimeofday]; END {print STDERR tv_interval($started),"\n";} 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); __END__ #make_tmp.pl #make_tmp.pl my $cnt = eval(shift()); print <<'*END*'; *END* while ($cnt--) { print <<'*END*'; content *END* } print <<'*END*'; *END* __END__