#! /usr/bin/env perl use strict; use warnings; use Storable qw(dclone); my $max_foo = 4; my $max_bar = 3;; my @_bar2 = map { { x => undef, y => undef, foo => [ map { { a => undef, b => undef, s => undef } } 1 .. $max_foo ] } } 1 .. $max_bar; require Data::Dumper; print Data::Dumper->new( [ \@_bar2 ], [ "*_bar" ] )->Sortkeys(1)->Dump();