while () { @res = /(\d{4}(?:-\d\d){2}).*dates processed: (.*)/; warn "@res"; } __DATA__ 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 2009-02-19 05:58:29,138 dates processed: 2009-02-18 #### 2009-02-02 2009-01-31, 2009-01-29, 2009-01-30 at tst.pl line 3, line 1. 2009-02-18 2009-02-16, 2009-02-17 at tst.pl line 3, line 2. 2009-02-19 2009-02-18 at tst.pl line 3, line 3. #### use Data::Dumper; while () { @res = map { split } /(\d{4}(?:-\d\d){2}).*dates processed: (.*)/; warn Dumper \@res; } __DATA__ 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 2009-02-19 05:58:29,138 dates processed: 2009-02-18 #### $VAR1 = [ '2009-02-02', '2009-01-31,', '2009-01-29,', '2009-01-30' ]; $VAR1 = [ '2009-02-18', '2009-02-16,', '2009-02-17' ]; $VAR1 = [ '2009-02-19', '2009-02-18' ];