use strict;
use warnings;
my $str = do { local $/; <DATA> };
if ($str =~ m/Remediation Report\n\n(.+?)\n/g){
print $1, $/;
while ($str =~ m/\n\n(.*)\n/g){
print $1, $/;
}
}
__DATA__
thread-index: AcjoCau17Ri90HMJR8qoukn2A1g7ng==
MIME-Version: 1.0
# rest of data goes here
The output is:
Adobe Flash Player Multiple Vulnerabilities - April 2008 - IE
Adobe Flash Player Multiple Vulnerabilities - April 2008 - Mozilla/Ope
+ra
Adobe Reader/Acrobat 8.1.2 and 7.1.0 Update - Acrobat 7.x
The trick is to use the /g-modifier on the first regex although it matches only once. That way pos $str will not be reset, and the next regex match starts where the previous left off.
Also note that ^ will anchor to the start of the string (not to the start of a line) unless the /m modifier is present. |