$data =~ /^(?:(\d+)\s*(?{ push @results, $^N }))+$/; #### my @results; while () { @results = (); /^(?:(\d+)\s*(?{ push @results, $^N }))+$/; print "line $.: ", join('-', @results), "\n"; } __DATA__ 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 #### line 1: 1-2-3-4-5 line 2: 2-3-4-5-6 line 3: 3-4-5-6-7 #### while () { my @results; /^(?:(\d+)\s*(?{ push @results, $^N }))+$/; print "line $.: ", join('-', @results), "\n"; } #### line 1: 1-2-3-4-5 line 2: line 3: