my %CALPHA = ( 'A' => [ 'wanker', 'tweet', 'bonk' ], 'B' => [ 'ping', 'zilch' ], ... ); my %DALPHA; foreach my $k ( keys %CALPHA ) { foreach my $l ( @{$CALPHA{$k}} ) { $DALPHA{$l} = $k; } } #### ... while (my $l = ) { my ($plain,$crypt) = split /\s+/, $l; %CDICT{$plain} = $crypt; %DDICT{$crypt} = $plain; } ... __DATA__ CORPS DIN-NEH-IH DIVISION ASHIH-HI REGIMENT TABAHA ... #### HOT HEAD:DEF-DUM-DEE CRUISE MISSILE:BOOM-BOOM