use strict; use warnings; use Data::Dumper; my @data = ...; my @sections; for (@data) { for my $i (1 .. 3) { my $j = $i+1; if (m/Sec_$i/ .. m/Sec_$j/) { # füge zeile in das array von $sections[$i-1] ein push @{ $sections[$i-1] }, $_; } } } print Dumper \@sections;