Sto scrivendo uno script in Perl e ho una domanda sul costrutto di Perl foreach
.Perl sta foreach e modifica la variabile di loop
Sembra che se si modifica una delle variabili del ciclo, esso cambia nell'array effettivo. È questo il caso, o ho sbagliato qualcosa ?
voglio cambiare una stringa come abc.abc#a
a abc_abc_a
(sottolinea per i caratteri alfa numerici), ma devono conservare il valore originale nella matrice per un uso successivo.
Ho codice che sembra qualcosa di simile:
@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.
}
ho potuto risolvere il problema nel modo seguente:
@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...
}
, ma c'è un modo più efficiente per raggiungere questo obiettivo?
Grazie mille!