use Data::Dumper; @arr= 1..18; (@{$aoa[@aoa]}[0..2], @arr) = @arr while @arr; $aoa= [@aoa]; print Dumper $aoa;