splice して push する。破壊的なので注意。
use strict;
use warnings;
sub chunk {
    my $ary = shift @_;
    my $n = shift @_;
    my $result = [];
    while (@$ary) {
        my @s = splice(@$ary, 0, $n);
        push(@$result, \@s);
    }
    return $result;
}
my $array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
print("array:", @$array, "\n");
my $chunked = chunk($array, 3);
foreach my $c (@$chunked) {
    print("chunk:", @$c);
    print("\n");
}
print("array:", @$array, "\n");
^o^ > perl chunk.pl array:0123456789 chunk:012 chunk:345 chunk:678 chunk:9 array: