$your_data =~ /\+Header1(.|\n+)-Header1\n\+Header2(.|\n+)-Header2\n\+Header3(.|\n+)-Header3\n/; #### while ($line = ) { if($line =~ /^\+Header1/) { $header1 = 1; next } # if +Header1 has its own line use next elsif($line =~ /^-Header1/) { next } else { $header1 = 0 } . . . if($header1) { $h1_data[$index++] = $line; } . . . }