En Perl, ¿usar "my" dentro de un ciclo foreach tiene algún efecto? Parece que la variable de índice siempre es local ya sea que se use o no 'my'. Entonces, ¿puedes dejar caer el "mi" dentro del ciclo foreach y aún tener alcance privado dentro del cuerpo del ciclo?¿Cuál es el alcance predeterminado del bucle foreach en Perl?
Como se puede observar, a través del 'para' bucle que hay una diferencia entre el uso/no uso de 'mi':
use strict;
use warnings;
my ($x, $y) = ('INIT', 'INIT');
my $temp = 0;
for ($x = 1; $x < 10; $x++) {
$temp = $x+1;
}
print "This is x: $x\n"; # prints 'This is x: 10'.
for (my $y = 1; $y < 10; $y++) {
$temp = $y+1;
}
print "This is y: $y\n"; # prints 'This is y: INIT'.
Pero en foreach no parecen tener un efecto:
my ($i, $j) = ('INIT', 'INIT');
foreach $i (1..10){
$temp = $i+1;
}
print "\nThis is i: $i\n"; # prints 'This is i: INIT'.
foreach my $j (1..10){
$temp = $j+1;
}
print "\nThis is j: $j\n"; # prints 'This is j: INIT'.
buena observación. – Zacky112
Cubrimos esto en _Learning Perl_, y es el primer párrafo de la documentación para los bucles foreach. :) –
Sugerencia: ¿Qué sucede con su código cuando lo antepone con 'use strict; usa advertencias; '? – Ether