Your while loop is handling blocks, not lines in each block. One fix is:
#!/bin/perl
use strict;
use warnings;
local $/ = "END OF REPORT\n";
while (<DATA>) {
my @lines = split /\n/;
for (@lines) {
print if /\*\sparameters after change\s\=/ .. /\*\sNRG locatio
+n\s\=/;
}
}
__DATA__
<13>Nov 13 17:27:25 OamCOMM[12260]:
TIMESTAMP=Tue Nov 13 17:27:25 2018
MSGCLS=OAMOPE
Title=OAM Create OPERATION
Severity=Inform
...
or just:
#!/bin/perl
use strict;
use warnings;
while (<DATA>) {
print if /\*\sparameters after change\s\=/ .. /\*\sNRG location\s\
+=/;
}
__DATA__
<13>Nov 13 17:27:25 OamCOMM[12260]:
TIMESTAMP=Tue Nov 13 17:27:25 2018
...
Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond