my %reasons; my ($key, $val, @holdval, $holdkey); while (($key, $val) = (each %{$switch_hash})){ @holdval = keys %{$$switch_hash{$key}}; for (values%{$val}){ while ( (my $tmpkey, my $tmpval) = each%{$_}){ my $newkey = $key.":".$tmpkey; my $newval =$tmpval; $tmpval =~ s/^\d+://; $reasons{$newkey} = $tmpval if ($tmpval ne ''); $newval =~ s/:.*$//; $$switch_hash{$key}{$holdval[0]}{$tmpkey} = $newval; } } } #### $VAR1 = { 'Washington' => { 'uslecwas5e1' => { '01-AUG-2002' => '' } }, 'Charleston' => { 'uslecchst5e1' => { '01-AUG-2002' => '' } }, 'Richmond' => { 'uslecric5e1' => { '01-AUG-2002' => '' } }, 'West Palm Beach' => { 'uslecwpb5e1' => { '01-AUG-2002' => '' } }, 'Atlanta' => { 'uslecatl5e1' => { '14-AUG-2002' => '10:reason', '15-AUG-2002' => '11:new reason' } }, 'Fort Myers' => { 'uslecftm5e1' => { '01-AUG-2002' => '' } }, 'Mobile' => { 'uslecmob5e1' => { '01-AUG-2002' => '' } }, 'Nashville' => { 'uslecnas5e1' => { '01-AUG-2002' => '' } }, 'Orlando' => { 'uslecorl5e1' => { '12-AUG-2002' => '2:different reason' } }, 'Charlotte' => { 'uslechar5e1' => { '01-AUG-2002' => '' } }, 'Louisville' => { 'usleclou5e1' => { '01-AUG-2002' => '' } }, 'Memphis' => { 'uslecmem5e1' => { '01-AUG-2002' => '' } }, 'Philadelphia' => { 'uslecphi5e1' => { '01-AUG-2002' => '' } }, 'Chattanooga' => { 'uslecchat5e1' => { '01-AUG-2002' => '' } }, 'Birmingham' => { 'uslecbir5e1' => { '01-AUG-2002' => '23:junk' } }, 'Greensboro' => { 'uslcgb5e2sm' => { '01-AUG-2002' => '' } }, 'New Orleans' => { 'uslecnew5e1' => { '01-AUG-2002' => '22:fake' } }, 'Jacksonville' => { 'uslecjac5e1' => { '01-AUG-2002' => '' } }, 'Norfolk' => { 'uslecnor5e1' => { '01-AUG-2002' => '' } }, 'DEX' => { 'chrdex' => { '13-AUG-2002' => '1:some stuff', '19-AUG-2002' => '1:reason again' } }, 'Atlanta II' => { 'uslecat25e1' => { '01-AUG-2002' => '' } }, 'Baltimore' => { 'uslecbal5e1' => { '01-AUG-2002' => '' } }, 'Raleigh' => { 'uslecral5e1' => { '01-AUG-2002' => '' } }, 'Pittsburgh' => { 'uslecpit5e1' => { '01-AUG-2002' => '' } }, 'Miami' => { 'uslecmia5e1' => { '01-AUG-2002' => '' } }, 'Knoxville' => { 'uslecknxv5e' => { '01-AUG-2002' => '' } }, 'Tampa' => { 'uslectam5e1' => { '01-AUG-2002' => '' } } }; #### $VAR1 = { 'DEX:19-AUG-2002' => 'reason again', 'Atlanta:14-AUG-2002' => 'reason', 'Orlando:12-AUG-2002' => 'different reason', 'Birmingham:01-AUG-2002' => 'junk', 'DEX:13-AUG-2002' => 'some stuff', 'Atlanta:15-AUG-2002' => 'new reason', 'New Orleans:01-AUG-2002' => 'fake' }; #### $VAR1 = { 'Washington' => { 'uslecwas5e1' => { '01-AUG-2002' => '' } }, 'Charleston' => { 'uslecchst5e1' => { '01-AUG-2002' => '' } }, 'Richmond' => { 'uslecric5e1' => { '01-AUG-2002' => '' } }, 'West Palm Beach' => { 'uslecwpb5e1' => { '01-AUG-2002' => '' } }, 'Atlanta' => { 'uslecatl5e1' => { '14-AUG-2002' => '10', '15-AUG-2002' => '11' } }, 'Fort Myers' => { 'uslecftm5e1' => { '01-AUG-2002' => '' } }, 'Mobile' => { 'uslecmob5e1' => { '01-AUG-2002' => '' } }, 'Nashville' => { 'uslecnas5e1' => { '01-AUG-2002' => '' } }, 'Orlando' => { 'uslecorl5e1' => { '12-AUG-2002' => '2' } }, 'Charlotte' => { 'uslechar5e1' => { '01-AUG-2002' => '' } }, 'Louisville' => { 'usleclou5e1' => { '01-AUG-2002' => '' } }, 'Memphis' => { 'uslecmem5e1' => { '01-AUG-2002' => '' } }, 'Philadelphia' => { 'uslecphi5e1' => { '01-AUG-2002' => '' } }, 'Chattanooga' => { 'uslecchat5e1' => { '01-AUG-2002' => '' } }, 'Birmingham' => { 'uslecbir5e1' => { '01-AUG-2002' => '23' } }, 'Greensboro' => { 'uslcgb5e2sm' => { '01-AUG-2002' => '' } }, 'New Orleans' => { 'uslecnew5e1' => { '01-AUG-2002' => '22' } }, 'Jacksonville' => { 'uslecjac5e1' => { '01-AUG-2002' => '' } }, 'Norfolk' => { 'uslecnor5e1' => { '01-AUG-2002' => '' } }, 'DEX' => { 'chrdex' => { '13-AUG-2002' => '1', '19-AUG-2002' => '1' } }, 'Atlanta II' => { 'uslecat25e1' => { '01-AUG-2002' => '' } }, 'Baltimore' => { 'uslecbal5e1' => { '01-AUG-2002' => '' } }, 'Raleigh' => { 'uslecral5e1' => { '01-AUG-2002' => '' } }, 'Pittsburgh' => { 'uslecpit5e1' => { '01-AUG-2002' => '' } }, 'Miami' => { 'uslecmia5e1' => { '01-AUG-2002' => '' } }, 'Knoxville' => { 'uslecknxv5e' => { '01-AUG-2002' => '' } }, 'Tampa' => { 'uslectam5e1' => { '01-AUG-2002' => '' } } };