#!/usr/bin/perl -w use strict; my @A= 1..int(rand(21)); print "\@A: ",scalar @A,$/; my @parts; $parts[3-$_] = [splice @A,0, @A%$_?int(@A/$_)+1:int(@A/$_)] foreach (reverse 1..3); #@A is empty now. print join( ' ',@$_)," : ",scalar @$_,$/ for @parts;