PERL ROCKS!
Un error que se encuentran atrapados en es que la segunda mitad de la sustitución tiene reglas de escape ligeramente diferente de la primera mitad. Por ejemplo, debe escapar de [] en la primera mitad, pero estos no tienen sentido en el segundo, así están muy bien como es menos que sigan una variable de cadena...adivinar por qué:
$ var [
Uh-oh! thats una suscripción matriz! En realidad no lo hace, pero está involucrado en el ejemplo siguiente, así que ten cuidado de ese detalle (línea 13).
Un error que hacen es que / se escapó en dos mitades, ya que es el divisor, aunque parece que usar \, por alguna razón - que está mal.
Así:
#!/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;
-
Usando un editor que tiene un buen resaltado de sintaxis para perl ayuda mucho con esto (el resaltado aquí es relativamente rudimentaria, y no cubre la expresión regular)...una alternativa para la línea 6 es la siguiente:
$string =~ s/(\[fish\]).*(\[\/fish\])/boop boop/g;
