Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Básico » Fallos sintácticos y avisos (warning) Responder al tema
Nuevo tema


Página 1 de 3  [ 41 mensajes ]  Ir a página 1, 2, 3  Siguiente
 
Nota 2011-09-13 03:07 @171

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Fallos sintácticos y avisos (warning)
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

Nota 2011-09-13 04:46 @240

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintácticos y avisos (warning)
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

Nota 2011-09-13 04:51 @243

Perlero Frecuente
Registrado: 2011-01-22 12:56 @580
Mensajes: 118
Re: Fallos sintácticos y avisos (warning)
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).


Nota 2011-09-13 04:58 @249

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintácticos y avisos (warning)
pvaldes escribió:
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.


Nota 2011-09-13 05:33 @272
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Fallos sintácticos y avisos (warning)
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


Nota 2011-09-13 06:33 @314

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintácticos y avisos (warning)
explorer escribió:
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.


Nota 2011-09-13 07:45 @365
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Fallos sintácticos y avisos (warning)
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:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!Perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. 1;

_________________
JF^D Perl programming


Nota 2011-09-15 10:02 @459

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintacticos y avisos (warning)
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

Nota 2011-09-15 10:05 @462

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintacticos y avisos (warning)
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]
3 veces
Nota 2011-09-15 14:30 @646
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Fallos sintacticos y avisos (warning)
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...
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1.         while( defined($comando = <$ficheroComandos>) or ($resultado != 2))
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
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1.         while($comando = <$ficheroComandos>)

y luego, insertar esta línea:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1.                 last if $resultado == 2;

_________________
JF^D Perl programming


Nota 2011-09-15 18:52 @827

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintacticos y avisos (warning)
Muchísimas gracias, explorer, ahora tengo una serie de dudas:

1- al ejecutar el comando: mostrar_directorio...
Debería de tener como salida la que tiene pero además me debería de salir esto en lo referente a los siguientes directorios:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
home (Directorio)
sin_r (Directorio) >>>> ERROR: A <../home/sin_r> le falta el permiso de lectura.
sin_x (Directorio) >>>> ERROR: A <../home/sin_x> le falta el permiso de búsqueda.


2- al ejecutar el comando: mostar_usuario 3333

Salida ahora: Lista de comandos disponibles
Salida correcta: >>>> ERROR: Orden <mostar_usuario> desconocida

3- al ejecutar el comando: mostrar_usuario usuario

Salida ahora:
usuario UID primario/secundario
========== ===== ===================
prueba2 1002 secundario

Salida correcta:

usuario UID primario/secundario
========== ===== ===================
usuario 1000 primario
ejuarez 1001 primario
prueba 1005 primario
prueba2 1002 secundario

4- al ejecutar el comando: mostrar_grupo usuario -p

Salida ahora:

usuario UID primario/secundario
========== ===== ===================

Salida correcta:

usuario UID primario/secundario
========== ===== ===================
usuario 1000 primario
ejuarez 1001 primario
prueba 1005 primario

5- Lo mismo pasa con el comando: mostrar_grupo 1000 -p

No me salen los usuarios que deben de salir, los mismos que en la duda anterior (4)

6- Al ejecutar:
mostrar_grupo alumnos
mostrar_grupo users
mostrar_grupo 2000
mostrar_grupo 2000 -s
mostrar_grupo 2000 -p
mostrar_grupo 2001
mostrar_grupo grupo_prueba -s

O me sale: ERROR el grupo especificado no existe
o
No hay registros que mostrar (cuando si debería de haber)

7- No inicializa los ficheros históricos.

Siento poner tantas dudas, pero no sé cómo solucionarlas. Una vez más, muchísimas gracias por el gran apoyo.


Nota 2011-09-24 08:29 @395
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Fallos sintacticos y avisos (warning)
Yo no veo errores...

El programa está mostrando la información la máquina sobre la que se está ejecutando, que no tiene por qué tener la misma configuración que la máquina del ejemplo mostrado en el ejercicio.

_________________
JF^D Perl programming


Nota 2011-09-24 09:29 @437

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintacticos y avisos (warning)
Pero yo creo que sí debería de mostrar la misma información sea cual sea la máquina, ya que siempre se ejecuta en una estructura de directorios fijos con unos archivos de los que selecciona la información que siempre son los mismos (usuarios, directorios, etc), ¿o ese es mi error?


Nota 2011-09-24 15:52 @702
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Fallos sintacticos y avisos (warning)
Si los datos se leen del mismo fichero de configuración, pues sí, no debería dar problemas...

El problema es si el programa lee la información de la máquina. Entonces las condiciones pueden ser distintas.

Por ejemplo, si ejecuto tu programa en mi máquina, no saldrá bien ninguna respuesta.

Las líneas 586, 590, 692, 711, 735, 739, 742, 773, 818 y 820 hacen referencia a ficheros y directorios que están en el sistema de ficheros actual.

Si esos ficheros y directorios son creados por los ficheros de pruebas, entonces sí que debería salirte idéntica salida para que esté bien el programa. Pero si hacen referencia a ficheros que no ha creado nadie, pues saldrá un aviso de que ese fichero/directorio no existe.

_________________
JF^D Perl programming


Nota 2011-10-01 06:11 @299

Perlero Nuevo
Registrado: 2009-05-05 09:03 @419
Mensajes: 25
Re: Fallos sintacticos y avisos (warning)
Exactamente, explorer, por eso deberían de dar los mismos resultados en las salidas, por eso está creada la estructura de directorios, los ficheros de configuración... Siempre deberían de hacer referencia a esos ficheros, no a los de la máquina, ¿esa puede ser la causa de los errores, ¿no?

¡Un saludo y gracias!


Responder al tema  [ 41 mensajes ]  Ir a página 1, 2, 3  Siguiente

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO