• Publicidad

Bareword

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

Bareword

Notapor jrincon3 » 2009-02-13 08:04 @378

Hola, he esto viendo en el foro el mensaje "Bareword "xxx" not allowed while "strict subs" in use..."

En mi caso donde pongo "xxx" es TRUE, me ha quedado claro que Perl no lo entiende, pues se supone que ha de estar definido antes.

Mi problema y mi pregunta es que yo tengo dos entornos Perl en dos máquinas distintas (A y B), cuando he pasado los fuentes de una aplicación de A (donde no tengo ningún problema) a B y ejecuto, tengo este error.

¿Alguna idea de por qué? ¿Dónde puedo buscar esa definición?

Lo que tengo claro es que en los fuentes del software que he pasado no está el problema, pues funciona en una máquina y en la otra no.

Lo único que me cabe pensar es en el propio Perl, pero no logro averiguar si es alguna librería quién lo contiene o quién debe tenerlo.

Gracias.
jrincon3
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2009-01-29 04:11 @216

Publicidad

Notapor explorer » 2009-02-13 08:21 @389

Podría ser debido incluso a la versión de Perl.

Fíjate si en el que se queja, tiene activada, en el intérprete de Perl, alguna opción como "use strict;" o "use warnings;" (más bien el primero).

Aunque yo creo que lo mejor es arreglar el error, que indica que se ha encontrado una "palabra suelta" que no sabe a qué pertenece. Podría ser un literal, un filehandle, una constante, una función...

Por ejemplo, el siguiente código es válido en Perl:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print Hola . Mundo;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Lo ejecutas desde la línea de comandos con:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
perl -le 'print Hola . Mundo'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y funciona.

Pero si lo ponemos en modo estricto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
perl -le 'use strict; print Hola . Mundo'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
entonces se queja:
Código: Seleccionar todo
Bareword "Mundo" not allowed while "strict subs" in use at -e line 1.
Execution of -e aborted due to compilation errors.

La solución es ponerlo bien (al usar el modo estricto, es que nos comprometemos a escribir de esa manera):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
perl -le 'use strict; print "Hola" . "Mundo"'
Coloreado en 0.001 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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jrincon3 » 2009-02-13 08:39 @402

La versión sí es cierto que es distinta: la "buena" es la v5.8.3 y la "mala" la 5.8.9. También utilizamos "use stricts".

En fin... creo que se tendrá que tocar el código, cosa que no quería hacer.

Muchas gracias. Buen finde.
jrincon3
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2009-01-29 04:11 @216

Notapor explorer » 2009-02-13 08:49 @409

Humm... no estoy de acuerdo con tus atribuciones de "bueno" y "malo"... creo que es justo al revés: que el lenguaje te avise de una posible inconsistencia o mala interpretación, siempre es bueno.

Además, seguro que será algo muy sencillo de arreglar. ;)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jrincon3 » 2009-02-16 04:31 @229

Bueno y Malo era un mero calificativo, según funcionaba o no, pero llevas razón, siempre es bueno que el interprete dé avisos, aunque para mi en este momento es una pequeña faena ;-)

Gracias por tu ayuda.
jrincon3
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2009-01-29 04:11 @216


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 0 invitados

cron