use strict; use warnings; my $router_data = [ # array of hashes for each router { # hash for router 1 routerName => 'asr01', ipAddr => '1.1.1.1', bgpPeer => [ # array of hashes for each peer { # hash for first peer Name => 'PEER1', ASN => '111', prefixList => 'PREFIX-PEER1-OUT', }, { # hash for second peer Name => 'PEER2', ASN => '222', prefixList => 'PREFIX-PEER2-OUT', }, ], }, { # hash for router 2 routerName => 'asr02', ipAddr => '2.2.2.2', bgpPeer => [ # array of hashes for each peer { # hash for first peer Name => 'PEER1', ASN => '333', prefixList => 'PREFIX-PEER1-OUT', } ], }, ]; for my $router ( @$router_data ) { print $router->{routerName}." : \n"; for my $peer ( @{ $router->{bgpPeer} } ) { print $peer->{prefixList}."\n"; } }