my @refsOfGroups = (); my @group; my $avg; my $point; while ( @pointValues) { $point = shift @pointValues; $avg = average(@group,$point); if ( ($avg - $group[0] > $x_threshold) ||($point - $avg > $x_threshold) ) { push @refsOfGroups, [@group]; @group = () } push @group $point; # include the last group } # while push @refsOfGroups, [@group];