$VAR1 = { 'host' => { 'jimmy.foo.com' => { 'hardware' => ['eht0', 'eht1'], 'duty' => 'web' }, }, }; #### my $hosts = $data->{'host'}; foreach my $host ( keys %$hosts ) { my $duties = $hosts->{$host}->{'duty'}; print "$host : $_\n" foreach ( UNIVERSAL::isa( $duties, 'ARRAY' ) ? @$duties : $duties ); }