Does this code produce the results you need? For any line that doesn't match "dates processed:" it pushes an empty array reference onto the @results array just so that you can tell there was a line that didn't match.
use strict; use warnings; use Data::Dumper; open my $logFH, q{<}, \ <<'EOD' or die qq{open: << HEREDOC: $!\n}; 2009-02-02 06:12:57,500 dates processed: 2009-01-31, 2009-01-29, 2009- +01-30 2009-02-18 06:03:47,713 dates processed: 2009-02-16, 2009-02-17 Different line here 2009-02-19 05:58:29,138 dates processed: 2009-02-18 EOD my @results = (); while( <$logFH> ) { chomp; push( @results, [] ), next unless m{dates processed:}; my @dates = m{(\d{4}-\d\d-\d\d)}g; push @results, \ @dates; } close $logFH or die qq{close: << HEREDOC: $!\n}; print Data::Dumper->Dumpxs( [ \ @results ], [ qw{ *results } ] );
The output.
@results = ( [ '2009-02-02', '2009-01-31', '2009-01-29', '2009-01-30' ], [ '2009-02-18', '2009-02-16', '2009-02-17' ], [], [ '2009-02-19', '2009-02-18' ] );
I hope this is useful to you.
Cheers,
JohnGG
In reply to Re: regex: extract multiple number of date patterns from certain lines
by johngg
in thread regex: extract multiple number of date patterns from certain lines
by Random_Walk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |