2011-09-13 03:07 @171 |
|
|
gonzal
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
|
2011-09-13 04:46 @240 |
|
|
gonzal
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
|
2011-09-13 04:51 @243 |
|
|
pvaldes
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).
|
2011-09-13 04:58 @249 |
|
|
gonzal
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.
|
2011-09-13 06:33 @314 |
|
|
gonzal
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.
|
2011-09-13 07:45 @365 |
|
|
 |
explorer
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: Using perl Syntax Highlighting #!Perl
use strict;
use warnings;
use diagnostics;
1;
_________________ JF^D Perl programming
|
2011-09-15 10:02 @459 |
|
|
gonzal
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
|
2011-09-15 10:05 @462 |
|
|
gonzal
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.
|
2011-09-15 14:30 @646 |
|
|
 |
explorer
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... Using perl Syntax Highlighting 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 Using perl Syntax Highlighting while($comando = <$ficheroComandos>)
y luego, insertar esta línea: Using perl Syntax Highlighting
_________________ JF^D Perl programming
|
2011-09-15 18:52 @827 |
|
|
gonzal
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: 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.
|
2011-09-24 09:29 @437 |
|
|
gonzal
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?
|
2011-09-24 15:52 @702 |
|
|
 |
explorer
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
|
2011-10-01 06:11 @299 |
|
|
gonzal
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!
|
| 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
|
|
Socializa |
 |
|