• Publicidad

Fallos sintácticos y avisos (warning)

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

Fallos sintácticos y avisos (warning)

Notapor gonzal » 2011-09-13 03:07 @171

Pues como el propio nombre indica, he realizado este script y me dicen que tengo fallos sintácticos y avisos (warning) que soy incapaz de ver, si alguien pudiese corregirme esos fallos estaría muy agradecido.

Aquí dejo el largo pero supongo, que para ustedes, sencillo código:
Última edición por gonzal el 2012-02-13 14:32 @647, editado 3 veces en total
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Publicidad

Re: Fallos sintácticos y avisos (warning)

Notapor gonzal » 2011-09-13 04:46 @240

Se me había olvidado, que para que el script se pueda ejecutar tenemos unos directorios, así como unas pruebas que es en las que da los errores, que dejo como archivos adjuntos.

Sé que es un código con bastantes líneas, pero agradecería vuestra ayuda. Gracias de antemano.
Última edición por gonzal el 2012-02-13 14:33 @648, editado 4 veces en total
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Re: Fallos sintácticos y avisos (warning)

Notapor pvaldes » 2011-09-13 04:51 @243

Aísla tu problema a la parte del código que produce el error e indica que fallos concretos estás obteniendo. No veo use strict, use warnings ni use diagnostics por ahí (aunque también es verdad que no me he leído más que las primeras líneas de tu código).
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Fallos sintácticos y avisos (warning)

Notapor gonzal » 2011-09-13 04:58 @249

pvaldes escribiste:Aísla tu problema a la parte del código que produce el error e indica que fallos concretos estás obteniendo. No veo use strict, use warnings ni use diagnostics por ahí (aunque también es verdad que no me he leído más que las primeras líneas de tu código).


Ese es el problema, que sólo es eso lo que me dicen, que al ejecutarlo da esos problemas y tengo que solucionarlo entre hoy y mañana. En los archivos adjuntos pongo cómo hay que ejecutarlo y qué órdenes ejecutan para que pase las pruebas.

Siento lo complicado del asunto.

Gracias de antemano una vez más.
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Re: Fallos sintácticos y avisos (warning)

Notapor explorer » 2011-09-13 05:33 @272

Como dice pvaldes, quien mejor te puede ayudar a localizar los errores sintácticos es el propio perl.

Inserta las líneas que te ha indicado pvaldes, al principio del programa, y ejecútalo desde la línea de comandos así:

perl -c programa.pl

La opción -c compilará el programa, pero no lo ejecutará. Si hay errores sintácticos, saldrán en pantalla. Con la ayuda de diagnostics saldrán muy detallados. Pruébalo y nos dices qué sale.
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: Fallos sintácticos y avisos (warning)

Notapor gonzal » 2011-09-13 06:33 @314

explorer escribiste:Como dice pvaldes, quien mejor te puede ayudar a localizar los errores sintácticos es el propio perl.

Inserta las líneas que te ha indicado pvaldes, al principio del programa, y ejecútalo desde la línea de comandos así:

perl -c programa.pl

La opción -c compilará el programa, pero no lo ejecutará. Si hay errores sintácticos, saldrán en pantalla. Con la ayuda de diagnostics saldrán muy detallados. Pruébalo y nos dices qué sale.


No sé si exactamente lo estoy haciendo bien, ya que ahora lo estoy intentando desde Windows, cosa que no estoy acostumbrado, lo único que me pone al ejecutarlo es que se ha producido un error al ejecutar el último comando.

He instalado el Active Perl para poder ejecutarlo, pero nunca lo he hecho desde Windows y no tengo otra posibilidad.
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Re: Fallos sintácticos y avisos (warning)

Notapor explorer » 2011-09-13 07:45 @365

Con el uso de warnings y diagnostics, perl debería darte pistas de qué es lo que está pasando, pero si ni siquiera funciona el comando perl -c tuprograma.pl, es que quizás el sistema no sabe lo que es perl, o no encuentra tuprograma.pl.

Si has instalado el ActivePerl, no debería ser la primera causa, pero sí la segunda.

De todas maneras, las primeras líneas del programa siempre las pondría así:

#!Perl
use warnings;
use diagnostics;

Si quisiera además ser estricto, pondría además

use strict;

Este es el programa mínimo que debería de funcionar desde la línea de comandos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!Perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. 1;
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: Fallos sintacticos y avisos (warning)

Notapor gonzal » 2011-09-15 10:02 @459

Aquí dejo un archivo .txt con la sálida, y los errores los cuales soy incapaz de corregir son los siguientes:

Además de que entra en un bucle sin fin y de que no inicializa los ficheros históricos, las siguientes pruebas:

Grupo de pruebas 1: pruebas erróneas => 2,8,9,10,13,16

Grupo de pruebas 2: pruebas erróneas => 3,8 a 10,12,13,15,16

Grupo de pruebas 3: pruebas erróneas => 1,3

Grupo de pruebas 5: pruebas erróneas => 7

Los 'warnings' serían superables, pero tiene demasiados errores en las pruebas.

Un saludo.
Última edición por gonzal el 2012-02-13 14:34 @649, editado 1 vez en total
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Re: Fallos sintacticos y avisos (warning)

Notapor gonzal » 2011-09-15 10:05 @462

También he realizado unas capturas de pantalla de como tendría que ser las salidas y cómo son con sus fallos.

Un saludo.
Adjuntos
Capturas errores.zip
(922.88 KiB) 63 veces
gonzal
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-05-05 09:03 @419

Re: Fallos sintacticos y avisos (warning)

Notapor explorer » 2011-09-15 14:30 @646

El error1.png es porque has escrito mostar_usuario, cuando debería ser mostrar_usuario.

El error2.png, sospecho que es porque no existe en ese sistema un usuario llamado "prueba" con un UID 1005. (O sea, que tu programa está funcionando bien.)

Sospecho que pasa lo mismo con el error3.png: la configuración de usuarios/grupos de esa máquina no coincide con el ejemplo de salida. (O sea, que tu programa está funcionando bien.)

Lo mismo para error5.png. Y si no sale lo mismo en el histórico, es porque la misión de esa parte del programa es la de guardar el histórico de los comandos introducidos. Para funcionar bien debe ser capaz de recuperar esos comandos, independientemente de lo que diga el ejemplo de la salida.

En el error6.png, el mensaje de error que debe salir es "... le falta el permiso de lectura.", para indicar que el fichero de configuración indicado (en el ejemplo, config3.txt), no debe existir. Tu mensaje de error sale porque a) sí que existe en tu ordenador, y b) no es conforme al formato de fichero de configuración buscado. (O sea, que tu programa está funcionando bien.)

El error7.png, sospecho que no tienes ningún usuario llamado www-data con UID 33. (O sea, que tu programa está funcionando bien.)

Yo no veo ningún error en el error8.png... solo un exceso de información a la salida.

En cuando a error9.png, creo que es debido a que no está bien resuelta la forma de pasar los comandos leídos desde el fichero de comandos, junto con los comandos leídos por el teclado, hacia el núcleo principal de ejecución de los comandos.

Quiero decir...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         while( defined($comando = <$ficheroComandos>) or ($resultado != 2))
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
ahí, siempre estamos intentando leer del fichero $ficheroComandos, incluso si hemos llegado al final de él. Sería de suponer que si hemos llegado al final de ese fichero, deberíamos dejar de seguir leyendo de él. Eso es justo lo que pasa: los mensajes de error dicen que seguimos intentando leer de él y meter el comando en $comando, y como no podemos, salen errores para indicar que esa variable queda indefinida, y por lo tanto la subrutina gestionar_comando(), falla.

Una posible solución sería reescribir esa línea como
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         while($comando = <$ficheroComandos>)
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y luego, insertar esta línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.                 last if $resultado == 2;
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

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

cron