while ( / ^ (\d{4}-\d\d-\d\d) .*dates processed:[ ] ( (?:\d{4}-\d\d-\d\d,[ ])* \d{4}-\d\d-\d\d ) $ /mg ) { my $on = $1; my $procesed = $2; my @processed = split(/, /, $processed); # Do something with $on and @processed. } #### while (<$fh>) { my ($on, $processed) = / ^ (\d{4}-\d\d-\d\d) .*dates processed:[ ] ( (?:\d{4}-\d\d-\d\d,[ ])* \d{4}-\d\d-\d\d ) $ / or next; my @processed = split(/, /, $processed); # Do something with $on and @processed. }