Thread View: es.comp.os.linux.programacion
11 messages
11 total messages
Started by AnimAlf
Wed, 01 Feb 2006 21:17
Perl y depuración
Author: AnimAlf
Date: Wed, 01 Feb 2006 21:17
Date: Wed, 01 Feb 2006 21:17
62 lines
3494 bytes
3494 bytes
hola,
estoy escribiendo unos script es perl en una máquina Linux 2.6.14.3
con
la versión 5.008007 de Perl, estos scripts luego los cuelgo en una
Solaris 5.8 con la versión de perl 5.00503 en la que accedo vía ftp.
utilizo los switches -T y -w
#/usr/bin/perl -Tw
Bien, pues casi me vuelvo loco tras el primer intento, en donde tras
comprobar que en los scripts locales no aparecía ni un sólo warning,
pero tras colgarlos en el servidor remoto, éstos no podían ser
ejecutados. Probé a cambiar -w por -W para ver si podía detectar
donde
estaba el error, pero no me mostraba advertencia ninguna. Finalmente
opté por hacer por colgar el script por pasos, primero ejecuta esto,
luego esto ... a trozos :(( para descubrir que mi error estaba en la
orden
mkdir dir;
en la que no escribía el octal de los permisos, creí que tendría que
coger por defecto el 0755 por defecto. Tras corregirlo todo funciona
bien en ambos lados.
Claro podéis imaginar, que localmente me recorrí el script con el
debug
(-d) como veiticatorcientas veces, sin localizarlo.
Y lo curioso es que si el la orden "mkdir dir;" estaba presente en el
script, la ejecución de este era impedida por el servidor, aunque
nunca
llegase el script a pasar por esa orden, por ejemplo
my $a=0; if ($a) {mkdir "dir";}
me da error a no ser que esté escrito con el segundo parámetro
my $a=0; if ($a) {mkdir "dir", 0700;}
y claro, la salida está por el navegador, con lo que mi información
sobre el error siempre es nula, si además no se inicia la ejecución.
El proyecto lo tengo en sus inicios, ahora me ha sido fácil encontrar
error, pero claro ambiciono que crezca pero me conozco y cuando me
aparecen cosas como estas me desespero dejando aparcado el proyecto.
¿puedo hacer algo con mi perl para que sea más esctricto? debo
quizás
recompilarlo con alguna opción especial para poder tener los errores
de
este tipo localmente.
thanks
--
AnimAlf AnimAlf@engendro.sytes.net
http://www.fut.es/~acl/AnimAlf
Personal Experimental WebServer: http://www.engendro.sytes.net
LiNUX ReGiSteRED UseR #91326
PublicPGPkeyID 0xB3B41215
Is the truth out there?
Coalición europea contra el correo comercial no solicitado:
http://www.euro.cauce.org/es
Re: Perl y depuración
Author: gamo
Date: Wed, 01 Feb 2006 23:24
Date: Wed, 01 Feb 2006 23:24
28 lines
1716 bytes
1716 bytes
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1821459723-1138836286=:17122 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Wed, 1 Feb 2006, AnimAlf wrote: > utilizo los switches -T y -w > #/usr/bin/perl -Tw =2E.. > =BFpuedo hacer algo con mi perl para que sea m=E1s esctricto? debo > quiz=E1s > recompilarlo con alguna opci=F3n especial para poder tener los errores > de > este tipo localmente. > > thanks Si en vez de usar -w pones use warnings; te da los errores mejor. man perllexwarn Saludos. --8323328-1821459723-1138836286=:17122--
Re: Perl y depuración
Author: AnimAlf
Date: Thu, 02 Feb 2006 02:42
Date: Thu, 02 Feb 2006 02:42
59 lines
3008 bytes
3008 bytes
El dj 02 de 02 del 2006 a les 00:24 +0100, en/na gamo va escriure: > On Wed, 1 Feb 2006, AnimAlf wrote: > > > utilizo los switches -T y -w > > #/usr/bin/perl -Tw > ... > > ¿puedo hacer algo con mi perl para que sea más estricta? debo > > quizás > > recompilarlo con alguna opción especial para poder tener los errores > > de > > este tipo localmente. > > > > hans > > Si en vez de usar -w pones > use rings; > te da los errores mejor. > > mana perlejaren > :)) tomo nota, interesante mana :)) jeu jeu, y puedes elegir a que dedicarle más atención Pero sigue siendo mi equipo más permisivo. Es decir, puedo ejecutar cosas en una sintaxis que en la otra máquina no se permiten, (por decirlo de algún modo), entonces es muy posible que yo tenga muchos vicios al escribir los archivos que yo crea normales o que es lo correcto, al no existir anomalia alguna localmente. Yo creo que tengo el perl standar. Lo que describí, perl lo permite en mi equipo. No se, supongo que quizás estoy buscando como activar lo que en un programa en C sería quizás con -ansi, no se, alguna cosa que me ayude a escribir un código limpio que pueda funcionar en cualquier máquina sin que lo dude como ahora me ocurre. > Saludos. Viendo lo que escribí antes, de que aunque no pase la orden el error aparece igual. Sorry, es que nunca recuerdo que el perl crea el objeto en memoria y luego lo ejecuta, no se por qué siempre lo veo como un script. Saludos -- AnimAlf AnimAlf@engendro.sytes.net http://www.fut.es/~acl/AnimAlf Personal Experimental WebServer: http://www.engendro.sytes.net LiNUX ReGiSteRED UseR #91326 PublicPGPkeyID 0xB3B41215 Is the truth out there? Coalición europea contra el correo comercial no solicitado: http://www.euro.cauce.org/es
Re: Perl y depuración
Author: David Serrano (Hue-Bond)
Date: Thu, 02 Feb 2006 06:57
Date: Thu, 02 Feb 2006 06:57
47 lines
2912 bytes
2912 bytes
AnimAlf, mié20060201@22:17:25(CET): > > estoy escribiendo unos script es perl en una máquina Linux 2.6.14.3 > con > la versión 5.008007 de Perl, estos scripts luego los cuelgo en una > Solaris 5.8 con la versión de perl 5.00503 en la que accedo vía ftp. Ugh. 5.5 ya tiene tiempo... > utilizo los switches -T y -w > #/usr/bin/perl -Tw Como ya te han dicho, 'use warnings' es mejor que '-w'; > ¿puedo hacer algo con mi perl para que sea más esctricto? Por supuesto, 'use strict'. De todas formas, esa no es la solución a tu problema en este caso. El problema es que la sintaxis del operador mkdir cambió entre una versión y otra (o eso parece). Creo que no te queda otro remedio que empollarte los perldelta* relevantes y enterarte de lo que es distinto. Seguro que perlport también te da consejos interesantes. Otra cosa que debes hacer siempre siempre siempre, es comprobar el valor de retorno de las llamadas al sistema. En este caso era un error de compilación así que tampoco te serviría pero, ¿qué pasaría si el mkdir se ejecutara bien en ambos sitios y luego fallase un posterior open? mkdir 'dir', 0750 or die "mkdir: $!"; open my $fd, '>', 'dir/file' or die "open: $!"; > debo quizás recompilarlo con alguna opción especial para poder tener los > errores de este tipo localmente. Si quieres ver los errores en el navegata, me temo que debes redirigir stderr a stdout en el momento en que se llama al script. Quizá también se puede hacer desde el propio programa, dentro de un bloque BEGIN, pero ahora mismo me tengo que marchar a la ofi pitando y no me acuerdo exactamente de lo que hay que poner en el segundo parámetro de open. -- David Serrano
Re: Perl y depuración
Author: Jos� Luis P�rez Diez
Date: Thu, 02 Feb 2006 09:11
Date: Thu, 02 Feb 2006 09:11
18 lines
1842 bytes
1842 bytes
In article <1138828645.236176.139620@g49g2000cwa.googlegroups.com>, AnimAlf wrote: > a versi�n 5.008007 de Perl, estos scripts luego los cuelgo en una > Solaris 5.8 con la versi�n de perl 5.00503 en la que accedo v�a ftp. > Estas mezclando dos versiones muy diferenctes de perl una 5.8 no muy nueva y una version experimental precursora de 5.6. Yo instalaria una nueva version de perl en el solaris ( necesitaras dejar la antigua pues solaris la usa para la gestion del sistema operativo). -- Los programadores esta ocupados intendtado mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar los idiotas. El universo va ganando
Re: Perl y depuración
Author: AnimAlf
Date: Thu, 02 Feb 2006 12:17
Date: Thu, 02 Feb 2006 12:17
129 lines
5330 bytes
5330 bytes
El dj 02 de 02 del 2006 a les 06:57 +0000, en/na David Serrano
(Hue-Bond) va escriure:
> AnimAlf, mié20060201@22:17:25(CET):
> >
> > estoy escribiendo unos script es perl en una máquina Linux 2.6.14.3
> > con
> > la versión 5.008007 de Perl, estos scripts luego los cuelgo en una
> > Solaris 5.8 con la versión de perl 5.00503 en la que accedo vía ftp.
>
> Ugh. 5.5 ya tiene tiempo...
>
:))
> > utilizo los switches -T y -w
> > #/usr/bin/perl -Tw
>
> Como ya te han dicho, 'use warnings' es mejor que '-w';
>
>
> > ¿puedo hacer algo con mi perl para que sea más esctricto?
>
> Por supuesto, 'use strict'.
>
Siempre forman parte de la cabecera O:) ya es que ni me planteo no
ponerlo.
> De todas formas, esa no es la solución a tu problema en este caso. El
> problema es que la sintaxis del operador mkdir cambió entre una versión y
> otra (o eso parece). Creo que no te queda otro remedio que empollarte los
> perldelta* relevantes y enterarte de lo que es distinto. Seguro que perlport
> también te da consejos interesantes.
Ya me estoy poniendo con ello. Uff, tienes razón. Hay muchos perldelta*
de por medio. ... je je je [jolín he empezado a leer este mail a las 9 y
son ya casi las dos] y tengo mi solución, abajo la presento :))
> Otra cosa que debes hacer siempre siempre siempre, es comprobar el valor de
> retorno de las llamadas al sistema. En este caso era un error de compilación
> así que tampoco te serviría pero, ¿qué pasaría si el mkdir se ejecutara bien
> en ambos sitios y luego fallase un posterior open?
>
> mkdir 'dir', 0750 or die "mkdir: $!";
> open my $fd, '>', 'dir/file' or die "open: $!";
>
utilizo los modos -X antes de cualquier operación con archivos, y veo
que también son aplicables a directorios. Así se verá el error. Pero me
mata cuando veo el mensaje de error del servidor sin que pueda acceder
realmente a lo que ocurrio.
> > debo quizás recompilarlo con alguna opción especial para poder tener los
> > errores de este tipo localmente.
>
> Si quieres ver los errores en el navegata, me temo que debes redirigir
> stderr a stdout en el momento en que se llama al script.
Eso sería ideal. ¿no pone pegas el servidor?
> Quizá también se
> puede hacer desde el propio programa, dentro de un bloque BEGIN, pero ahora
> mismo me tengo que marchar a la ofi pitando y no me acuerdo exactamente de
> lo que hay que poner en el segundo parámetro de open.
>
Que tengas un buen día.
voy a ver si consigo redirigir la salida de error.
---------------------
he hecho lo siguiente
---------------------
#!/usr/bin/perl -w
# visor.cgi
use CGI qw(:standard);
use IPC::Open3;
my @args;
print header();
print "<html><head><title>VisorRemoto</title></head><body>\n";
$script=param("f");
die "No hay nada que probar" unless (-x $script);
local(*PARA_ENTRARLE, *LASALIDASTD, *LASALIDAERROR);
$procesohijo = open3(*PARA_ENTRARLE, *LASALIDASTD, *LASALIDAERROR,
$script, @args);
@salidaStr = <LASALIDASTD>; # Leer la salida standar.
@salidaErr = <LASALIDAERROR>; # Leer si aparece algún error
print "<h2>La Salida Standar:</h2><br>:\n", @salidaStr, "\n";
print "<h2>La Salida de Errores:</h2><br>\n", @salidaErr, "\n";
close LASALIDASTD;
close LASALIDAERROR;
waitpid($procesohijo, 0);
if ($?) {
print "No lo he dejado zombie por ahí.Terminó con: $?\n";
}
print"</body></html>";
--------------------------
para llamarlo con
http://domain/cgi-bin/visor.cgi?f=./archivo.cgi
y por fin veo los errores. Si ocurren.
Gracias por las referencias
Atentamente
--
AnimAlf AnimAlf@engendro.sytes.net
http://www.fut.es/~acl/AnimAlf
Personal Experimental WebServer: http://www.engendro.sytes.net
LiNUX ReGiSteRED UseR #91326
PublicPGPkeyID 0xB3B41215
Is the truth out there?
Coalición europea contra el correo comercial no solicitado:
http://www.euro.cauce.org/es
Re: Perl y depuración
Author: David Serrano (Hue-Bond)
Date: Thu, 02 Feb 2006 20:15
Date: Thu, 02 Feb 2006 20:15
35 lines
1949 bytes
1949 bytes
AnimAlf, jue20060202@13:17:22(CET): > > Siempre forman parte de la cabecera O:) ya es que ni me planteo no > ponerlo. Yo lo uso incluso para los oneliners: $ alias perl alias perl='perl -Mstrict -w' $ _ Cuando no quiero, uso '/usr/bin/perl'; >> Si quieres ver los errores en el navegata, me temo que debes redirigir >> stderr a stdout en el momento en que se llama al script. > > Eso sería ideal. ¿no pone pegas el servidor? Para él es transparente. $ perl > out 2> err open STDERR, '>&', \*STDOUT or die "open: $!\n"; print STDOUT "out\n"; print STDERR "err\n"; __END__ $ cat out err out $ cat err $ _ -- David Serrano
Re: Perl y depuración
Author: AnimAlf
Date: Thu, 02 Feb 2006 23:16
Date: Thu, 02 Feb 2006 23:16
47 lines
2827 bytes
2827 bytes
El dj 02 de 02 del 2006 a les 10:11 +0100, en/na José Luis Pérez Diez va escriure: > In article <1138828645.236176.139620@g49g2000cwa.googlegroups.com>, > AnimAlf wrote: > > a versión 5.008007 de Perl, estos scripts luego los cuelgo en una > > Solaris 5.8 con la versión de perl 5.00503 en la que accedo vía ftp. > > > > Estas mezclando dos versiones muy diferenctes de perl una 5.8 no muy > nueva y una version experimental precursora de 5.6. > > Yo instalaria una nueva version de perl en el solaris ( necesitaras > dejar la antigua pues solaris la usa para la gestion del sistema > operativo). > Me gustaría tan sólo acercarme alguna vez a la sala donde está el Solaris :)) Viendo esto recordé que al principio me dijeron que la ubicación de perl se encontraba en /usr/local/bin, pero como me funcionaban bien con /usr/bin pues no hice caso. Tras el mensaje he pensado que quizás en el otro directorio hallaría una versión más reciente de perl, pero no. Mi gozo en un pozo, es la misma versión :(( aunque no me puedo quejar, ya que con esto he despejado dudas que poseía sobre él (quiero decir, cosas que no entendía), y ya puedo ver los errores, que ha sido algo que siempre me frenaba y desmoralizaba. Saludos -- AnimAlf AnimAlf@engendro.sytes.net http://www.fut.es/~acl/AnimAlf Personal Experimental WebServer: http://www.engendro.sytes.net LiNUX ReGiSteRED UseR #91326 PublicPGPkeyID 0xB3B41215 Is the truth out there? Coalición europea contra el correo comercial no solicitado: http://www.euro.cauce.org/es
Re: Perl y depuración
Author: David Serrano (Hue-Bond)
Date: Fri, 03 Feb 2006 06:57
Date: Fri, 03 Feb 2006 06:57
32 lines
2340 bytes
2340 bytes
AnimAlf, vie20060203@00:16:30(CET): > > El dj 02 de 02 del 2006 a les 10:11 +0100, en/na José Luis Pérez Diez va > escriure: >> In article <1138828645.236176.139620@g49g2000cwa.googlegroups.com>, >> AnimAlf wrote: >> > a versión 5.008007 de Perl, estos scripts luego los cuelgo en una >> > Solaris 5.8 con la versión de perl 5.00503 en la que accedo vía ftp. >> >> Estas mezclando dos versiones muy diferenctes de perl una 5.8 no muy >> nueva y una version experimental precursora de 5.6. AFAIK, la 5.8.7 es la última, no una "no muy nueva". Lo único que no es muy nuevo es la forma de ponerlo. > Mi gozo en un pozo, es la misma versión :(( Prueba: $ /usr/bin/perl -V > bin $ /usr/local/bin/perl -V > local $ diff -u bin local A ver si es realmente la misma ;^). Con suerte encuentras alguna diferencia. De todas formas si te han dicho que uses la de local, creo que deberías hacerlo. Quizá es un consejo que te han dado para que no se rompa tu código más tarde (por ejemplo cuando actualicen una versión y no otra). -- David Serrano
Re: Perl y depuración
Author: J.A. Gutierrez
Date: Fri, 03 Feb 2006 08:59
Date: Fri, 03 Feb 2006 08:59
21 lines
1840 bytes
1840 bytes
"David Serrano (Hue-Bond)" <responder_solo_en_el_grupo@yahoo.es> wrote: : AnimAlf, jue20060202@13:17:22(CET): :> :> Siempre forman parte de la cabecera O:) ya es que ni me planteo no :> ponerlo. : Yo lo uso incluso para los oneliners: : $ alias perl : alias perl='perl -Mstrict -w' : $ _ : Cuando no quiero, uso '/usr/bin/perl'; Te puedes ahorrar pulsaciones de tecla con \perl -- PGP and other useless info at \ http://webdiis.unizar.es/~spd/ \ finger://daphne.cps.unizar.es/spd \ Timeo Danaos et dona ferentes ftp://ivo.cps.unizar.es/pub/ \ (Virgilio)
Re: Perl y depuración
Author: Jos� Luis P�rez Diez
Date: Fri, 03 Feb 2006 10:01
Date: Fri, 03 Feb 2006 10:01
12 lines
1704 bytes
1704 bytes
In article <1138922418.12178.0.camel@general.engendro.sytes.net>, AnimAlf wrote: > Me gustaría tan sólo acercarme alguna vez a la sala donde está el > Solaris :)) Si tienes permisos para ejecutar perl en solaris lo puedes instalar en tu cuenta de usuario. -- Los programadores esta ocupados intendtado mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar los idiotas. El universo va ganando
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads