perl si la ligne correspond à l'expression rationnelle, ignorer la ligne et passer à la prochaine ligne dans le fichier
Comment voulez-vous faire ce qui suit en perl:
for $line (@lines) {
if ($line =~ m/ImportantLineNotToBeChanged/){
#break out of the for loop, move onto the next line of the file being processed
#start the loop again
}
if ($line =~ s/SUMMER/WINTER/g){
print ".";
}
}
Mis à jour pour montrer plus de code, c'est ce que j'essaie de faire:
sub ChangeSeason(){
if (-f and /.log?/) {
$file = $_;
open FILE, $file;
@lines = <FILE>;
close FILE;
for $line (@lines) {
if ($line =~ m/'?Don't touch this line'?/) {
last;
}
if ($line =~ m/'?Or this line'?/){
last;
}
if ($line =~ m/'?Or this line too'?/){
last;
}
if ($line +~ m/'?Or this line as well'?/){
last;
}
if ($line =~ s/(WINTER)/{$1 eq 'winter' ? 'summer' : 'SUMMER'}/gie){
print ".";
}
}
print "\nSeason changed in file $_";
open FILE, ">$file";
print FILE @lines;
close FILE;
}
}
OriginalL'auteur ar.dll | 2011-06-10
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser prochaine
$line
, par exemplefor my $line ( @lines ) { ... }
Bien sûr, vous avez raison. J'ai juste gardé l'OP du code. J'ai donc ajouter la correction.
OriginalL'auteur Toto
Plus concis méthode est
(Je crois que j'ai ce droit.)
OriginalL'auteur Ted Hopp
Suffit d'utiliser la fonction suivant.
De même, vous pouvez utiliser la "dernière" pour terminer la boucle. Par exemple:
Edit: 7pm sur 6/13
J'ai pris votre code et la regarda, réécriture de certaines choses, et c'est ce que j'ai:
Espère que cela aide certains.
OriginalL'auteur Dish
Si je ne suis malentendu vous, votre "sortir de la boucle for, passer à la ligne suivante... [et] début de la boucle à nouveau" est simplement un complexe manière de dire "sauter le corps de la boucle pour cette itération".
OriginalL'auteur Josh