#! /usr/local/bin/perl use warnings; use strict; my $allData = { src1 => { dest1 => '112.112.112.112', dest2 => '112.112.112.113' }, src2 => { dest1 => '192.168.1.101', dest2 => '192.167.1.102' } }; foreach my $source ( keys %{$allData}){ foreach my $dest (keys %{$allData->{$source}}){ #blah } }