Hang on, not so fast. ;-)
Your regular expression will only find matching occurances of XXX ... YYY, *NOT* to validate all occurances.
To validate a sequence, you will have to make sure there is no mismatches of XXX, and hence require a bit more work.
use strict;
my $data;
{
local $/;
$data = <DATA>;
}
# number of times didn't match XXX ... YYY
# is total number of XXX minus the XXX ... YYY
# pattern appears.
my $non_match =
$#{[$data =~ /(XXX)/gs]} -
$#{[$data =~ /(XXX\s*\n+YYY)/gs]};
print !$non_match ?
"All sequences of XXX - YYY are ok\n" :
"$non_match bad sequences found\n";
__DATA__
XXX
YYY
XXX
ZZZ
XXXYYY
| [reply] [Watch: Dir/Any] [d/l] |
$str !~ /XXX(?!\s*\n+YYY)/;
Abigail | [reply] [Watch: Dir/Any] [d/l] |