Tengo problemas para utilizar Perl grep() con una cadena que puede contener caracteres que se interpretan como cuantificadores de expresiones regulares.¿Hay una función Perl para convertir una cadena en una expresión regular para usar esa cadena como patrón?
I tiene el siguiente error cuando el patrón grep es "g ++" porque los símbolos '+' se interpretan como cuantificadores. Aquí está la salida por un programa que sigue:
1..3
ok 1 - grep, pattern not found
ok 2 - grep, pattern found
Nested quantifiers in regex; marked by <-- HERE
in m/g++ <-- HERE/at escape_regexp_quantifier.pl line 8.
¿Hay un modificador que podría utilizar para indicar a grep que los cuantificadores se tendrán en cuenta, o hay una función que escaparía a los cuantificadores?
#! /usr/bin/perl
sub test_grep($)
{
my $filter = shift;
my @output = ("-r-xr-xr-x 3 root bin 122260 Jan 23 2005 gcc",
"-r-xr-xr-x 4 root bin 124844 Jan 23 2005 g++");
return grep (!/$filter/, @output);
}
use Test::Simple tests => 2;
ok(test_grep("foo"), "grep, pattern not found");
ok(test_grep("gcc"), "grep, pattern found");
ok(test_grep("g++"), "grep, pattern found");
PS: además de la cuestión respuesta anterior, celebro cualquier comentario sobre el uso de Perl en el anterior ya que todavía estoy aprendiendo. Gracias
nota \ Q termina en \ E, probablemente debería asegurarse de que \ E en el contenido se haya escapado. – Hasturkun
No necesita - \ E en el patrón * interpolado * no causa problemas. – hexten