que estoy usando Perl para buscar y reemplazar múltiples expresiones regulares: Cuando ejecuto el comando siguiente, me sale un error:Perl búsqueda de línea de comandos y reemplazar con expresiones múltiples
prompt> find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g' -pe 's/(\W)##/\1/g'
syntax error at -e line 2, near "s/(\W)##/\1/g"
Execution of -e aborted due to compilation errors.
xargs: perl: exited with status 255; aborting
que tienen múltiples -e
es válido en Perl, ¿por qué no funciona? ¿Hay una solución para esto?
Puede reemplazar esas dos expresiones regulares con una alternancia: 's/## (? = \ W) | (? <= \ W) ## // g' – TLP
@TLP Soy un novato en Perl; por favor, ¿pueden explicar qué significan? = y? <= este contexto? –
Son aserciones alternativas, puede leer más sobre ellas en [perldoc perlre] (http://perldoc.perl.org/perlre.html#Look-Around-Assertions). Tienen ancho cero, por lo que solo revisan y no eliminan. – TLP