local $/; my $data = ; my @good_lines; while($data =~ m/Next Chatter \>(.*?)\< Previous Chatter/gs){ $good_lines = $1; push @good_lines,$good_lines; } foreach (@good_lines){ my @lines = split /\n/; foreach (@lines){ next unless $_; /([^:]+): (.+) \((\d+) minutes ago\)/; my( $name, $text, $delay ) = ( $1, $2, $3 ); print "NAME:$name\nText:$text\nDelay:$delay\n\n"; } }