in reply to Why dot does not match newline in oneliner but it does in script, with /s modifier?

You are running perl -p which by default processes each line in isolation, therefore your regex will never match because you don't have a line with both an opening and closing brace on it, for example.

You could change the line-ender to null to switch this behaviour off:

$ perl -lp0e 's/A\s*\{.+?\}//s' <<EOX > A { > B 123 > C xyz > } > EOX

This gives the empty output as you initially expected.

Update: See the discussion in the follow-up question Oneliner replace in-place adds extra spaces at the end of the file particularly in regards to the use of -l and how the order of these options is important.


🦛

  • Comment on Re: Why dot does not match newline in oneliner but it does in script, with /s modifier?
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: Why dot does not match newline in oneliner but it does in script, with /s modifier?
by bliako (Abbot) on Oct 24, 2025 at 21:22 UTC

    indeed it does work, thank you. I came from sed who has difficulties handling multi-line chunks but got beaten by the defaults.