Estoy escribiendo un script en Perl y tengo una pregunta sobre la construcción de foreach
de Perl.Foreach de Perl y cambio de la variable de bucle
Parece que si cambia una de las variables de bucle cambia en la matriz real. ¿Es este el caso, o he hecho algo completamente mal?
Quiero cambiar una cadena como abc.abc#a
a abc_abc_a
(guiones bajos para caracteres no alfanuméricos), pero tengo que conservar el valor original en la matriz para su uso posterior.
tengo código que se ve algo como esto:
@strings = ('abc.abc#a', 'def.g.h#i');
foreach my $str (@strings){
$str =~ s/[^0-9A-Za-z]/_/g;
print $str, "\n"; #Actually I use the string to manipulate files.
}
que podría resolver el problema de la siguiente manera:
@strings = ('abc.abc#a', 'def.g.h#i');
foreach my $str (@strings){
my $temp = $str; #copy to a temporary value
$temp =~ s/[^0-9A-Za-z]/_/g;
print $temp, "\n"; #$str remains untouched...
}
pero hay una manera más eficiente de lograr esto?
Muchas gracias!