PERL ROCKS!
Une erreur vous êtes pris en est que la seconde moitié de la substitution a des règles échapper légèrement différent de celui du premier semestre. Par exemple, vous devez vous échapper [] dans la première moitié, mais ils n'ont pas de sens dans le second sont si fines comme SAUF ils suivent une variable de chaîne...deviner pourquoi:
$ var [
uh-oh! thats un abonnement de tableau! Vous ne réalisons pas cela, mais il est impliqué dans l'exemple ci-dessous, alors surveillez bien pour ce détail (ligne 13).
Une erreur vous ne faites est que / doit être échappés dans les deux moitiés, puisque tel est le diviseur, même si vous semblez utiliser \ pour une raison quelconque - qui est faux.
Donc:
#!/usr/bin/perl -w
use strict;
# simple replacement
my $string = "[fish]text here[/fish]\n";
$string =~ s/\[fish\].*\[\/fish\]/[fish]boop boop[\/fish]/g;
print $string;
# replacement involving intermediate process
$string = "[fish]text here[/fish]\n";
$string =~ /\[fish\](.*)\[\/fish\]/;
my $new = uc();
$string =~ s/\[fish\].*\[\/fish\]/[fish]$new\[fish]/g;
print $string;
- #!/usr/bin/perl -w
- use strict;
-
- # simple replacement
- my $string = "[fish]text here[/fish]\n";
- $string =~ s/\[fish\].*\[\/fish\]/[fish]boop boop[\/fish]/g;
- print $string;
-
- # replacement involving intermediate process
- $string = "[fish]text here[/fish]\n";
- $string =~ /\[fish\](.*)\[\/fish\]/;
- my $new = uc();
- $string =~ s/\[fish\].*\[\/fish\]/[fish]$new\[fish]/g;
- print $string;
-
Utilisation d'un éditeur qui a une bonne coloration syntaxique pour perl aide beaucoup avec ça (la mise en évidence ici est relativement grossier et ne couvre pas les expressions régulières)...une alternative pour la ligne 6 est la suivante:
$string =~ s/(\[fish\]).*(\[\/fish\])/boop boop/g;
