Bienvenido a los foros de Perl en español, julesberns.
El problema está en la línea 291 de DBIx::Report::Excel:
Using perl Syntax Highlighting
if ( scalar @{$parser->structure->{'column_names'}} == scalar @{$self->{'data'}->[0]} ) {
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Resulta que el $parser (de la clase SQL::Parser), no tiene ninguna entrada que se llame 'column_names'.
Fue un cambio que se realizó en la versión 1.24 de SQL::Parser:
[Things that may break your code]
* SQL::Parser now didn't deliver a struct containing 'column_names',
'computed_columns' and 'set_functions' - it's combined into one member
'column_defs'.
Eso quiere decir que el autor del módulo DBIx::Report::Excel lo hizo con una versión antigua de SQL::Parser...
Solución...
1.- Editar el fichero /usr/lib/perl5/site_perl/5.12.3/DBIx/Report/Excel.pm (o donde lo tengas instalado) y vas a la famosa línea 291, y cambias 'column_names' por 'column_defs'
2.- Del programa tuyo, solo sobra la línea del disconnect(). Quítala entera.
Lo he probado, y funciona.