[Perl] Hay otra forma de escribir esto??

Adrian Galindo agalindo@liceaga.facmed.unam.mx
Thu, 04 Jul 2002 18:42:23 -0500


Sergio Rojas H wrote:

>Good Evening! Perleros!
>
>Me preguntaba si hay otra forma de escribir esto, mas compacto.
>
>
>if ( ($horas =3D~ /\D/) && !($horas =3D~ /\./) ){
> ....
>}
>
=BFCu=E1l ser=EDa tu pseudoc=F3digo?
O sea, =BFqu=E9 quieres hacer?

Si entiendo bien, quieres exluir a todos lo n=FAmeros y el punto, =BFno?
Entonces te deber=EDa funcionar algo as=ED:

if ( $horas !~ /[\d\.]/) {

Donde creas una clase de caracteres que incluye a los n=FAmeros y el punt=
o.
Ya con esto, puedes jugar con el =3D~ y !~ e incluso con el complemento d=
e=20
la clase usando el ^

Te preguntaba que quer=EDas hacer porque tamb=EDen tienes que ver si en t=
u=20
cadena $horas es de uno o varios caracteres, con lo que tendr=EDas que=20
usar el + junto a la clase, o incluso anclarla con ^ y $

Si ya le cachas a las regexp est=E1 f=E1cil de entender, si no, es buena=20
oportunidad para aprender m=E1s... :D

Saludos.
Adri=E1n.