use strict; use warnings; use Test::More 'tests' => ; use Test::NoWarnings; # adds 1 test use Data::Dumper; # for debug my @al = (...); my @distribution = ( 3, 4, 5, 5, 6, 6, 8, 10, ); my $ar_expected_output = ( [ ... ], [ ... ], ... ); my $ar_got_output = distribute(\@al, \@distribution); is_deeply $ar_got_output, $ar_expected_output; exit; # subroutines ############################################# sub distribute { my ($ar_input, # array ref.: input array $ar_distribution, # array ref.: distribution to output arrays ) = @_; my @output; ... return \@output; }