Perl split a list into fixed-size chunks

Perl
use strict;
use warnings;

sub chunk {
    my ($size, @items) = @_;
    die "chunk size must be positive\n" unless $size > 0;
    my @batches;
    while (@items) {
        my $take = @items < $size ? scalar @items : $size;
        push @batches, [ splice @items, 0, $take ];
    }
    return @batches;
}

my @batches = chunk(3, 'a' .. 'h');
for my $batch (@batches) {
    print join(',', @$batch), "\n";
}