I agree that use of an XML parser is likely to be a better idea, but just an example of what your fellow monks were hoping for as an example of what you tried and what resulted (except this works):
>perl -wMstrict -le
"my $s = qq{xxx </div>\n</body> xxx};
print qq{[[$s]]};
;;
my $tags = qr{ </div> \n </body> }xms;
$s =~ s{ $tags }{gone}xms;
print qq{[[$s]]};
"
[[xxx </div>
</body> xxx]]
[[xxx gone xxx]]
Question: Are you sure it's only a single newline that's present? The presence of other whitespace characters than just a newline can confuse the issue. The following might be a better regex:
qr{ </div> \s* </body> }xms