Estoy tratando de almacenar una expresión regular s///g
como variable (sin mucha suerte).Cómo guardar una expresión regular de sustitución (buscar/reemplazar) en una variable, similar a qr //
Aquí hay un ejemplo que usa una coincidencia normal para mostrar lo que pretendo hacer.
my %file_structure = (
header => qr/just another/,
table => qr/perl beginner/,
)
Ahora puedo llamar a esto usando $line =~ $file_structure{'header'}
y volverá undef
, o true
si el patrón coincide.
Sin embargo, me gustaría decir $line =~ $file_structure{'foo'}
donde $file_structure{'foo'}
contiene algo así como s/beginner/hacker/g
.
La excepción es si usted necesita para representar banderas como '/ e' o '/ G' en alguna parte, porque los que no se puede representar en los LHS como '/ x' o'/i' puede. Debe usar las mismas banderas de sustitución cada vez, o usar una cadena de tiempo de ejecución 'eval' cuando no pueda. – tchrist
Tiene que utilizar este método http://stackoverflow.com/questions/392643/how-to-use-a-variable-in-the-replacement-side-of-the-perl-substitution-operator si desea incluye una expresión capturada en el lado derecho. Es más seguro, de todos modos, y más general – jjmerelo