#!/usr/bin/perl -w use strict; use Data::Dumper; my %hash = ( TABLE_NAME => { COLUMN_NAME => { 'CYCLE_DATE' => { TYPE => 'VARCHAR2(20)', NULLABLE => 'N' }, 'SOME_DATE' => { TYPE => 'DATE', NULLABLE => 'N' }, 'AMITRUE' => { TYPE => 'BOOLEAN', NULLABLE => 'N' } } } ); my %hash2 = ( TABLE_NAME => { COLUMN_NAME => { 'CYCLE_DATE' => { TYPE => 'VARCHAR2(20)', NULLABLE => 'Y' }, 'SOME_DATE' => { TYPE => 'SOMEGUY', NULLABLE => 'N' }, 'AMITRUE' => { TYPE => 'BOOLEAN', NULLABLE => 'N' }, 'THE_DUDE' => { TYPE => 'VARCHAR2(10)', NULLABLE => 'Y' } } } ); # works for walking single hash - have just started # trying to figure out how I'd do both. walk_hash(\%hash, \%hash2); sub walk_hash { my ($h1, $h2) = shift; foreach my $key (keys %$h) { if( ref $h->{$key}) { walk_hash( $h->{$key} ); } else { print $h->{$key}; } } }