Primer error - search on CPAN, no Google :)
Esto arroja muchos resultados, pero más bien resalta el problema de CPAN, que hay más de una solución, y no siempre está claro cuáles funcionan, se han abandonado, están rotos, son lentos o lo que sea .
Y preocupante, la mejor respuesta (o, al menos, uno de los mejores) aparece en la página cuatro de los resultados :(Como han sugerido otras personas, XML::LibXSLT es robusta y hace el trabajo:
use XML::LibXSLT;
use XML::LibXML;
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $source = $parser->parse_file('foo.xml');
my $style_doc = $parser->parse_file('bar.xsl');
my $stylesheet = $xslt->parse_stylesheet($style_doc);
my $results = $stylesheet->transform($source);
print $stylesheet->output_string($results);
Sin embargo, si no quieres hacer nada elegante, está XML::LibXSLT::Easy, que esencialmente simplemente ajusta lo anterior en una llamada a un método (y hace un montón de cosas inteligentes entre bastidores usando Moose. ¡Consulta la fuente de información!).
use XML::LibXSLT::Easy;
my $p = XML::LibXSLT::Easy->new;
my $output = $p->process(xml => "foo.xml", xsl => "foo.xsl");