while(@xyz) { my @copy = splice(@xyz,0,10); push @xyz_chunk, \@copy; } my @working; while(@xyz_chunk) { my $xyz_chunk = shift @xyz_chunk; @working = @$xyz_chunk; print "debug: @working\n"; } #### foreach my $val (@xyz_chunk) { threads->create("sub", $val); }