• Publicidad

Error: Not a GLOB reference

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-23 09:28 @436

Not a GLOB reference at c:/Perl/site/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm line 10.

¿Cómo resuelvo este error?
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Publicidad

Re: Error: Not a GLOB reference

Notapor explorer » 2012-05-23 09:47 @449

Viendo el código de XML/SAX/PurePerl/Reader/UnicodeExt.pm se ve que se trata de un gestor de archivo para ser usado en un binmode()... así que le has debido pasar otra cosa.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-23 09:52 @452

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # $Id$
  2.  
  3. package XML::SAX::PurePerl;
  4. use strict;
  5.  
  6. no warnings 'utf8';
  7.  
  8. eso es lo que hay en el UnicodeExt.pm
  9. sub chr_ref {
  10.     return chr(shift);
  11. }
  12.  
  13. if ($] >= 5.007002) {
  14.     require Encode;
  15.    
  16.     Encode::define_alias( "UTF-16" => "UCS-2" );
  17.     Encode::define_alias( "UTF-16BE" => "UCS-2" );
  18.     Encode::define_alias( "UTF-16LE" => "ucs-2le" );
  19.     Encode::define_alias( "UTF16LE" => "ucs-2le" );
  20. }
  21.  
  22. 1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


eso es lo que hay en el /Perl/site/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Re: Error: Not a GLOB reference

Notapor explorer » 2012-05-23 10:50 @493

No puede ser: En la línea 10 no tienes ninguna instrucción que provoque el error que muestras.

El mío es este, y ahí sí que está la línea 10 con el binmode():

Sintáxis: (UnicodeExt.pm) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # $Id$
  2.  
  3. package XML::SAX::PurePerl::Reader;
  4. use strict;
  5.  
  6. use Encode ();
  7.  
  8. sub set_raw_stream {
  9.     my ($fh) = @_;
  10.     binmode($fh, ":bytes");
  11. }
  12.  
  13. sub switch_encoding_stream {
  14.     my ($fh, $encoding) = @_;
  15.     binmode($fh, ":encoding($encoding)");
  16. }
  17.  
  18. sub switch_encoding_string {
  19.     $_[0] = Encode::decode($_[1], $_[0]);
  20. }
  21.  
  22. 1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo que me parece es que puede ser algo antiguo el módulo que muestras...

Yo tengo instalada la versión 0.99:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. explorer@casa:~/Documentos/Desarrollo> perl -MXML::SAX -E 'say $XML::SAX::VERSION'
  2. 0.99
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-24 05:10 @257

Can't find string terminator "'" anywhere before EOF at -e line 1.

me dice eso,
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Re: Error: Not a GLOB reference

Notapor explorer » 2012-05-24 06:46 @323

Si aún trabajas en Windows, debes recordar que las comillas son al revés que en Linux/Unix:

perl -MXML::SAX -E "say $XML::SAX::VERSION"
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-25 03:39 @194

¡Ah, vale! Pues sí, tengo la misma versión que tu.

\Perl\bin>perl -MXML::SAX -E "say $XML::SAX::VERSION"
0.99
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Re: Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-25 05:32 @272

Borré el módulo y lo volví a instalar y ya lo tengo igual.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use XML::Simple;
  2. use Data::Dumper;
  3. use XML::Parser;
  4. use strict;
  5. use warnings;
  6. use XML::LibXML;
  7.  
  8. print "Archivo a comparar: ";
  9. my $archivo_xml = <>;
  10. chomp $archivo_xml;
  11. exit if $archivo_xml eq 'Q';
  12.  
  13. my $parser = XML::Parser->new( ErrorContext => 2 );
  14. eval { $parser->parsefile($archivo_xml) };
  15. if ($@) {
  16.     $@ =~ s/at \/.*?$//s;
  17.     die "\nERROR en '$archivo_xml':\n$@\n";
  18. }
  19.  
  20. else {
  21.     print "\nEl archivo está bien formado\n";
  22. }
  23.  
  24. my $xsd = 'CNJ_Monitorizacion_1.0.xsd';
  25.  
  26. if ( my $error = validate_xml_against_xsd( $archivo_xml, $xsd ) ) {
  27.     die "\nNo se ajusta al esquema actual: CNJ_Monitorizacion_1.0.: $error\n";
  28. }
  29.  
  30. else {
  31.     print "\nSe ajusta al esquema actual: CNJ_Monitorizacion_.0.\n";
  32. }
  33.  
  34. sub validate_xml_against_xsd {
  35.     my ( $archivo_xml, $xsd ) = @_;
  36.  
  37.     my $schema = XML::LibXML::Schema->new( location => $xsd );
  38.     my $parser = XML::LibXML->new;
  39.  
  40.     my $doc = $parser->parse_file($archivo_xml);
  41.     eval { $schema->validate($doc) };
  42.  
  43.     if ( my $ex = $@ ) {
  44.         return $ex;
  45.     }
  46.     return;
  47. }
  48.  
  49. $archivo_xml = new XML::Simple( KeyAttr => [] );
  50.  
  51. my ( $operador, $almacen, $tipo, $Subtipo, $Periodicidad, $fecha, $lote ) = split( /_/, $archivo_xml );
  52.  
  53. my $data = $archivo_xml->XMLin( $archivo_xml, ForceArray => ['Cabecera'] );
  54. foreach $archivo_xml ( @{ $data->{Cabecera} } ) {
  55.     if ( $operador = $archivo_xml->{OperadorId} ) {
  56.         print "Son iguales";
  57.     }
  58.  
  59.     else {
  60.         print "No son iguales";
  61.     }
  62.  
  63. }
  64.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ese es el código.
Última edición por explorer el 2012-05-25 05:44 @280, editado 2 veces en total
Razón: Formateado de código con Perltidy
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Re: Error: Not a GLOB reference

Notapor explorer » 2012-05-25 05:51 @285

La línea 55 está mal. Estás usando el operador de asignación '=', que no es de comparación.

Si quieres hacer una comparación numérica entre $operador y $archivo_xml->{OperadorId}, debes usar '=='.
Si, en cambio, se trata de una comparación alfanumérica, debes usar 'eq'.

Más información en tu propio ordenador en perldoc perlop, y en la Web (traducido).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error: Not a GLOB reference

Notapor Redpunkpower » 2012-05-25 06:46 @324

Ah, vale, no me había dado cuenta, pero al ejecutarlo me sigue dando el problema
Not a GLOB reference at U:/Perl/site/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm
line 10.


¿Y por qué tengo el código diferente al tuyo en Unicode.pm?
Redpunkpower
Perlero nuevo
Perlero nuevo
 
Mensajes: 35
Registrado: 2012-05-08 09:37 @442

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados

cron