my @set = ('A' .. 'Z', 0 .. 3); my $min = 3; my @result; for my $begin (0 .. $#set-$min+1) { for my $end ($begin+$min-1 .. $#set) { push @result, "@set[$begin .. $end]"; } } { local $" = ''; # interpolate an array without spaces print "$_\n" for @result; }