Question: ```
$ perl --version
This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi

$ echo -e "foo\nbar" > baz.txt
$ perl -p -e 's/foo\nbar/FOO\nBAR/m' baz.txt
foo
bar

```

How can I get this replacement to work?

Answer: 
You can use the `-0` switch to change the input separator:

```
perl -0777pe 's/foo\nbar/FOO\nBAR/' baz.txt

```

`-0777` sets the separator to `undef`, `-0` alone sets it to `\0` which might work for text files not containing the null byte.

Note that `/m` is needless as the regex does not contain `^` nor `$`.
It has to do with the `-p` switch. It reads input one line at a time. So you cannot run a regexp against a newline between two lines because it will never match. One thing you can do is to read all input modifying variable `$/` and apply the regexp to it. One way:

```
perl -e 'undef $/; $s = <>; $s =~ s/foo\nbar/FOO\nBAR/; print $s' baz.txt

```

It yields:

```
FOO
BAR

```