Thread View: es.comp.os.linux.programacion
3 messages
3 total messages
Started by Olaf "El BLanco"
Fri, 20 Jan 2006 20:56
Problema en un for de PERL
Author: Olaf "El BLanco"
Date: Fri, 20 Jan 2006 20:56
Date: Fri, 20 Jan 2006 20:56
8 lines
1171 bytes
1171 bytes
for ($a=0; $a<$max; print "\t$a", $a++) {}
// Imprime 1 2 3 4 5 ... max. Muy bien...
Pero ahora quiero hacer esto otro:
for ($a=0; $a<$max; $a++, print "\t$a") {}
// Y me imprime 00 11 22 33 44... max-1max-1 ?
Re: Problema en un for de PERL
Author: Reinoso G.
Date: Sat, 21 Jan 2006 01:22
Date: Sat, 21 Jan 2006 01:22
27 lines
2258 bytes
2258 bytes
El otro d�a, Olaf "El BLanco" nos estuvo contando:
> for ($a=0; $a<$max; print "\t$a", $a++) {}
> // Imprime 1 2 3 4 5 ... max. Muy bien...
Al contrario, ese tiene que imprimir 00 11 22...
precisamente porque f�jate lo que va detr�s de print, o sea su argumento.
Dado que no est�s usando par�ntesis todo lo que va detr�s hasta el final
de la sentencia es argumento de print. As� que imprime un tabulador (que
se sustituye por ir entre comillas dobles) la variable a y justo despues
la variable a otra vez y luego la post-incrementa.
Si pusieras print ("\t$a") valdr�a, aunque te soltar�a un warning del
estilo "print est� siendo interpretada como funci�n en la linea XX". PAra
eso lo mejor es dejarse de zarandajas y hacer un for como toda la vida,
con las instrucciones entre las llaves.
>
> Pero ahora quiero hacer esto otro:
>
> for ($a=0; $a<$max; $a++, print "\t$a") {}
>
> // Y me imprime 00 11 22 33 44... max-1max-1 ?
No, ah� llega a max, no a max-1 porque incrementas antes de imprimir. Y no
imprime m�s que lo que hay detr�s de print. Has intercambiado los casos.
Saludos.
Re: Problema en un for de PERL
Author: David Serrano (Hue-Bond)
Date: Sat, 21 Jan 2006 15:55
Date: Sat, 21 Jan 2006 15:55
36 lines
1905 bytes
1905 bytes
Olaf "El BLanco", vie20060120@21:56:54(CET):
>
> for ($a=0; $a<$max; print "\t$a", $a++) {}
> // Imprime 1 2 3 4 5 ... max. Muy bien...
Discrepo:
$ perl
my $max = 6;
for ($a=0; $a<$max; print "\t$a", $a++) {}
__END__
00 11 22 33 44 55$ _
> for ($a=0; $a<$max; $a++, print "\t$a") {}
> // Y me imprime 00 11 22 33 44... max-1max-1 ?
Hmm... ¿no te habrás equivocado al escribir? ;)
$ perl
my $max = 6;
for ($a=0; $a<$max; $a++, print "\t$a") {}
__END__
1 2 3 4 5 6$ _
En cualquier caso no necesitas el bloque vacío:
$ perl
my $max = 6;
print "\t$_" for 0..$max-1;
__END__
0 1 2 3 4 5$ _
--
David Serrano
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