use 5.012;
use warnings;
use List::Util qw(sum);

sub hundred {
    my @list = @_;
	my $i = 0;
	return sub {
		my $start = $i;
		($start < @list) or return ();
		my $sum = 0;
		while(($i < @list) and (($sum += $list[$i]) <= 100)){
			$i++;
		}
		return @list[$start .. $i - 1];
	};
}

my @a = map{ int(rand(10)) + 1 } (1 .. 50);
say "@a";

my $h = hundred(@a);
while((my @list = $h->()) > 0){
	say "@{[sum(@list)]} : @list";
}
