> > Primero que nada, tu duda: Puedes poner una variable dentro de una
> > expresi�n regular sin sintaxis especial alguna
>
> Eso me lo vas a tener que demostrar porque yo ya no me lo creo ;-)
> He perdido la f� completamente!!!

Es com�n ese sentimiento al comenzar a meterse a lo esot�rico y bonito de
Perl ;-) No desesperes...

> > $line =~ /^$id\|.*?\|.*?\|.*?\|.*?\|.*?\|(.*?.)\|.*/;
>
> Ack.
>
> >    $line =~ /^$id\|.*\|.*\|.*\|.*\|.*\|(.+)\|.*/;
>
> Ack. Lo pruebo y te cuento.
>
> >    $line =~ /^$id\|(?:.*\|){5}(.+)\|.*/;
>
> �Se supone que esto es m�s legible? No s� qu� decir :-)

jejeje :) Bueno, m�s legible en el sentido en que puedes identificar m�s
f�cilmente una repetici�n - M�s legible a ojos entrenados ;-)

> >    $line =~ /^$id\|(?:.*\|){5}(.+)\|/;
>
> Ok, perfecto. Lo que venga despu�s lo desecho, por tanto as� queda m�s
> cortito.
>
> > - Legibilidad, importante, muy importante.
>
> Entre t� y yo, no te me ofendas. �Legibilidad? Esto es Perl. Y
> expresiones regulares! XDDD
> Despu�s de ver en los tutoriales cosas com $_, $., $+... Perl no
> coincide con mi concepto de legible :-))))

Pythonera ;-)

El que tenga chiringolitos no lo hace menos legible... S�, requiere algo
m�s de conocimiento para entenderle, pero lo hace simplemente m�s
expresivo, m�s flexible. Se ve m�s sucio, pero si lo ves de cerquita, es
m�s bonito :)

> >  Por lo que dices, t� no eres experta en expresiones regulares, y no
> >  sabes qui�n va a darle mantenimiento en un futuro
>
> Lamentablemente lo s�: yo.  Y te aseguro que con el orgullo que tengo lo
> voy a dejar bonito. Porque ahor lo estoy migrando de bash a Perl, y me
> funciona, pero muy pobre en rendimiento. Y como se me meta a m� entre
> ceja y ceja aprender a hacer esto, que no puede ser tan dif�cil, digo
> yo, que no es Inteligencia Artificial... ;-)

�Evaluar expresiones regulares te sale menos eficiente que en shell? No,
creo que est�s haciendo algo mal ;-) Una de las principales mejor�as al
alejarte del shell hacia un lenguaje compilado, como Perl, es la velocidad
de ejecuci�n :)

> > - Usa el modificador /x, y comenta tu expresi�n. Este modificador te
> > permite meter espacio en blanco y comentarios sin que afecten a la
> > expresi�n:
> >
> >    $line =~ /^$id\|       # Que inicie con el identificador
> >               (?:.*\|){5} # Cinco campos que no me importan
> >               (.+)\|      # De ac� estoy tomando $encontrado
> >             /x;
>
> Eso s� me parece m�s legible, ahora empezamos a hablar el mismo idioma
> :-)

De hecho, as� se ven (entiendo) las expresiones regunares en Python por
default. Y en Perl 6 tambi�n. Nota lateral, para t� que eres lingista:
Perl 6 te va a encantar: Del mismo modo que unes m�todos y atributos en
una clase cuando programas orientado a objetos, en Perl 6 podr�s juntar
juegos de reglas de expresiones regulares en gram�ticas flexibles y
retepoderosotas! :)

> > Es ligeramente m�s r�pido y m�s claro usar $1 (explicitar que es el
> > primer caso encontrado exitosamente) a usar $+ (el siguiente - en este
> > caso, el primero).
>
> Perfecto. Putos tuttoriales... :-)

El problema de muchos tutoriales es que te ense�an en estilo Perl 4, que
era bastante menos claro y m�s estorboso...

> (...)
> Y luego lo meto en una hoja de c�culo Gnumeric, con otro script que me
> hizo mi querido amigo H�ctor, que me meti� el vicio de Perl en la sangre
> :-)

Mi m�s profundo respeto por H�ctor!

> > ...Adem�s, se nota que vienes de C ;-)
>
> C�mo lo sabes? C fue mi primer lenguaje, pero nunca hice nada serio ni
> medianamente dif�cil. Me sirvi� para aprender un poquito de metodolog�a.
> Luego PHP, que se traga perfectamente el estilo de C. Luego tuve una
> crisis y volv� a Bash. Y despu�s de coquetear con Python, ganador de mi
> coraz�n, he querido espiar al "enemigo". Perl me recuerda al PHP pero en
> ilegible, es write only :-)

La deformaci�n que te lleva a usar ciertas estructuras como si estuvieras
hablando en C :)

Perl te permite escribir de maneras mucho m�s naturales, por ejemplo la
que te mencionaba, en vez de if (condici�n) {acci�n} a muchos nos es m�s
claro, para acciones simples, decir acci�n if condici�n. Y va lo mismo
para los while, para los for/foreach, todo el asunto de los until y
unless, el operador ternario (cond ? verdadero : falso) tan poco utilizado
en C y tan querido en Perl...

> De todas formas, soy un desastre programando. Soy de letras. No hay
> pensamiento l�gico en mi pobre neurona.

...Ac�rcate a un lenguaje dise�ado por linguistas! :)

Saludos pros�litas,

-- 
Gunnar Wolf - [EMAIL PROTECTED] - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF



Responder a