in reply to matching keyword in multi-line records
Anyway, this works for me:
#!/usr/bin/perl use strict; use warnings; $_ = do { local $/; <DATA> }; while ( /^(\d+-\d+-\d+(?:(?!\d+-\d+).)*keyword)(?:(?!\d+-\d+).)*?$/smg + ) { print "$1\n"; } __DATA__ 2008-10-01 message 1 2008-10-02 message 2 2008-10-03 multi-line message message 3 keyword 2008-10-04 message 4 2008-10-05 multi-line blah blah message 5 keyword junk 2008-10-06 message 6 blah keyword 2008-10-06 this is message 7
|
|---|