#/usr/bin/perl -w use strict; my @array = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z); my $nbuckets = 3; # number of buckets to divide @array into my %bucket; # @{$bucket{0 .. $nbuckets - 1}} are the buckets foreach my $n( 0 .. $nbuckets - 1) { foreach my $size (1 .. int(0.9999 + @array /($nbuckets - $n))) { push @{$bucket{$n}}, shift @array; } } foreach my $n (0 .. $nbuckets - 1) { print "bucket $n: ", join(' ', @{$bucket{$n}}), "\n"; }