#!/usr/bin/env perl use strict; use warnings; my %data = qw{a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9}; my $N = $ARGV[0]; my $i = 0; my %work; $work{(($i += 1) % $N) + 1}{$_} = $data{$_} for keys %data; use Data::Dump; dd \%work;