^((\w+):\n((?:[^\n]+\n)+)) -> ^((\w+):\n((?:[^\n]+\n)+)*) #### while ( $data =~ /^((\w+):\n((?:[^\n]+\n)+)*)/gm ) { my ( $key, $val ) = ( $2, $3 ); chomp $val; ## remove pesky \n\n doSomething( $key, $val ); ## store it, print it, ignore it.. }