🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #1284

Re: Perl y depuración

#1284
From: AnimAlf
Date: Thu, 02 Feb 2006 12:17
129 lines
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
Technical Details
Message-ID: <1138882870.10250.11.camel@general.engendro.sytes.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!telenews.teleline.es!not-for-mail
References: <1138828645.236176.139620@g49g2000cwa.googlegroups.com> <slrndu3bb8.mqq.responder_solo_en_el_grupo@genus.hue-bond.info>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,1a9245151043c239
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,UTF8
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!telenews.teleline.es!not-for-mail
X-Trace-PostClient-IP: 80.32.76.249
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Perl y depuración
From: AnimAlf <AnimAlf@engendro.sytes.net>
In-Reply-To: <slrndu3bb8.mqq.responder_solo_en_el_grupo@genus.hue-bond.info>
References: <1138828645.236176.139620@g49g2000cwa.googlegroups.com>
  <slrndu3bb8.mqq.responder_solo_en_el_grupo@genus.hue-bond.info>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Organization: Is the truth out there?
Message-ID: <1138882870.10250.11.camel@general.engendro.sytes.net>
Mime-Version: 1.0
X-Mailer: Evolution 2.4.2.1 
Lines: 130
Date: Thu, 02 Feb 2006 12:17:22 GMT
NNTP-Posting-Host: 10.20.31.4
X-Complaints-To: usenet@teleline.es
X-Trace: telenews.teleline.es 1138882642 10.20.31.4 (Thu, 02 Feb 2006 13:17:22 MET)
NNTP-Posting-Date: Thu, 02 Feb 2006 13:17:22 MET