Как правильно связать Perl замен - PullRequest
0 голосов
/ 26 марта 2020

Я замечаю, что, когда непосредственно в терминале, легко объединять подстановки:

perl -p -i -e 's/\xa/\xd/g; s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g' _temp.txt;

Однако я не могу объединить две подстановки вместе, так как переписываю некоторые сценарии, которые у меня есть. В настоящее время, как два отдельных утверждения, это работает, но я не уверен, как объединить эти две строки вместе:

$thisGrid =~ s/\xa/\xd/g;
$thisGrid =~ s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g; 

Сначала я попытался:

$thisGrid =~ s/\xa/\xd/g =~ s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g; 

Это не похоже на Работа.

Другие похожие темы не отвечают на мой вопрос.

1 Ответ

6 голосов
/ 26 марта 2020

foreach l oop может использоваться как актуализатор.

for ($thisGrid) {
   s/\x0A/\x0D/g;
   s/(?:<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(?:\r\t.+)/$1/g; 
}

В противном случае вам нужно использовать /r, чтобы вернуть измененную строку.

$thisGrid =
   $thisGrid
   =~ s/\x0A/\x0D/gr
   =~ s/(?:<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(?:\r\t.+)/$1/gr;

You может связать их

...