use strict; use warnings; ## buffer for holding each Recipe my @buffer; ## read data while(){ if (m/^\d+\.\U.+\E$/){ ## begins with a number and is in all upper case ## must be a title, so process what we already have process_buffer(\@buffer); ## reset buffer @buffer = ($_,); } else { push @buffer, $_; } } ## don't miss the last one! process_buffer(\@buffer); ### SUBS ### sub process_buffer{ ## collect buffer my @buffer = @{$_[0]}; ## need at least two lines... return 0 unless (scalar@buffer > 1); ## process it ... } __DATA__ 1.TITLE OF FIRST RECIPE abstract Recipe 1. Recipe 2. Recipe ... Procedure...