Bienvenido a los foros de Perl en Español, oihantze.
Hay unos errores en las expresiones regulares, sí. El problema está en que '\', '(' y ')' son caracteres especiales, por lo que hay que escaparlos:
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict
;
use warnings
;
use diagnostics
;
my $nombre = "Storage Alternatives for Mobile Computers (1994)";
$nombre =~ s/ /\\ /g;
$nombre =~ s/\)/\\)/;
$nombre =~ s/\(/\\)/;
print $nombre;Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Ahora bien, si el trabajo consiste solo en escapar los caracteres especiales que están dentro del $nombre, se pueden usar los operadores de escapado dentro de literales:
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict
;
use warnings
;
use diagnostics
;
my $nombre = "Storage Alternatives for Mobile Computers (1994)";
$nombre = "\Q$nombre\E";
print $nombre;Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
que es lo mismo que usar la función quotemeta():
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict
;
use warnings
;
use diagnostics
;
my $nombre = "Storage Alternatives for Mobile Computers (1994)";
print quotemeta($nombre);Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Más información sobre '\Q' en
perlop.