[Perl] Pregunta #3

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Fri, 15 Mar 2002 09:17:54 -0600 (CST)


> >Umm... =BFPor qu=E9 sigues teniendo el $Temporal{$Fi2}++;?
>
>     Porque soy medio wey???

Eso explica muchas cosas :)

> >El que te aparezcan warnings no s=F3lo hace que sea m=E1s lento, sino qu=
e te
> >indica d=F3nde est=E1s cag=E1ndola. El ver warnings en tu programa te de=
be hacer
> >corregirlo para evitarlos.
>
>     Lo que pasa es que nunca uso warnings... adem=E1s, como se le hace pa=
ra
> ver el warning en HTML?? Si corro uno de mis programas desde la consola s=
olo
> se ejecuta cierta parte del mismo, tengo que ejecutarlo desde el browser.=
=2E.

tail -f /path/de/logs/de/apache/error.log

> >foreach my $Fic1 (@IndiceFichero1, @IndiceFichero2) {
> >    # =BFPara qu=E9 hacer dos ciclos si puedes hacer uno s=F3lo?
> >    if defined $Temporal{$Fic} {
> >        $Temporal{$Fic}++;
> >    } else {
> >        $Temporal{$Fic} =3D 1;
> >    }
> >}
>
>     Pues si, ser=EDa con el defined, pero ya se me hace mucha jalada... E=
l
> defined no ocasiona de todas maneras pasos adicionales internos para ver =
si
> esta definido o no???

S=ED, pero esto lo hice para que te vaya generando la cuenta de cu=E1ntos
tienes de cada uno. Igual podr=EDas reemplazar el if completo con un
$Temporal{$Fic} =3D 1 sin verificaci=F3n...

Cuando lo aumentas ($Temporal{$Fic}++) recuerda que Perl tiene que ir a
buscar su contenido a la memoria, y de todos modos identificar=E1 si est=E1=
 o
no definido, y generar=E1 la excepci=F3n para reemplazar ese valor indefini=
do
por un cero en la suma.

> >La segunda, m=E1s simple y recomendable a=FAn: Siempre verificar que el
> >usuario sea v=E1lido al iniciar la sesi=F3n. (c=F3digo feo ejemplo)
>
> >verificaUsuario(param('user')) if param();
> >(...)
> >sub verificaUsuario {
> >    my $usr=3Dshift;
> >    return 0 if usuarioValido($usr);
> >    print h3('Vete a la goma. No me caes bien.'), end_html;
> >    exit 0;
> >}
>
>     Y como es eso de param??? Que tipo de sesi=F3n???

Recuerda que param es una simple funci=F3n que te da CGI.pm. Si la llamas
sin par=E1metros, te regresa el n=FAmero de par=E1metros recibidos. Lo que =
hago
ac=E1 es que si hay par=E1metros verifique al usuario ad ovum.

--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF