use v5.16; use warnings; # collapse a list my @data = (0, 3, 8, 9, 5, 2, 0, 1, 0); my $acc = 0; say join(',',@data); while (@data && $data[0] < 5) { $acc += shift @data; } $data[0] += $acc; $acc = 0; while (@data && $data[$#data] < 5) { $acc += pop @data; } $data[$#data] += $acc; say join(',',@data);