Я хочу удалить пробел между обратным тиком (\ x60) и символами слова внутри скрипта perl, который выполняет множество других подстановок регулярных выражений. Если я распечатаю результаты предыдущих замен в оболочке bash, а затем передам новый вызов perl, это сработает. Но внутри одного вызова Perl это не так. В приведенном ниже примере третья строка (одна команда perl) не работает, тогда как четвертая строка (две отдельные команды) работает.
printf '%b' 'Well, `\n he said it \n'
printf '%b' 'Well, `\n he said it \n' | perl -p -e 'use strict; use warnings; s|\n||g;' ; echo
printf '%b' 'Well, `\n he said it \n' | perl -p -e 'use strict; use warnings; s|\n||g; s|([\x60])\s*(\w)|$1$2|g;' ; echo
printf '%b' 'Well, `\n he said it \n' | perl -p -e 'use strict; use warnings; s|\n||g;' | perl -p -e 'use strict; use warnings; s|([\x60])\s*(\w)|$1$2|g;'; echo
Почему он не работает внутри одного вызова perl? Я думал, что мы должны избегать нескольких или вложенных труб (подоболочек).
Это perl 5, версия 18 и GNU bash, версия 3.2.57 (1) в BSD unix.