in reply to Crypt::Navajo

i don't know if this is faster or slower, but it seems like it would be easier to maintain if you built %DALPHA from %CALPHA and the same for %DDICT

my %CALPHA = ( 'A' => [ 'wanker', 'tweet', 'bonk' ], 'B' => [ 'ping', 'zilch' ], ... ); my %DALPHA; foreach my $k ( keys %CALPHA ) { foreach my $l ( @{$CALPHA{$k}} ) { $DALPHA{$l} = $k; } }

then you just have to update one hash instead of two

if updates are frequent go a step further and pull them in from a DATA section.

... while (my $l = <DATA>) { my ($plain,$crypt) = split /\s+/, $l; %CDICT{$plain} = $crypt; %DDICT{$crypt} = $plain; } ... __DATA__ CORPS DIN-NEH-IH DIVISION ASHIH-HI REGIMENT TABAHA ...

you may have to use a different delimiter depending on your code.

HOT HEAD:DEF-DUM-DEE CRUISE MISSILE:BOOM-BOOM

then you can add a new word way easy...

echo "JAR HEAD:UG-GO-GRUNT" >> /path/to/Crypt/Navajo.pm

cool anyways... now i can decode the blood-stained documents that mysteriously turned up in my mailbox

Update: merlyn is correct, i meant to say $CDICT{$plain}=$crypt; $DDICT{$crypt}=$plain;

Replies are listed 'Best First'.
•Re: Re: Crypt::Navajo
by merlyn (Sage) on Jan 17, 2003 at 12:30 UTC
Re: Re: Crypt::Navajo
by Cybercosis (Monk) on Jan 26, 2003 at 21:32 UTC
    I'd thought about writing the code in almost precisely this fashion, but since the Navajo Code hasn't been updated since 1945, it seemed unnecessary. =-)
    ~Cybercosis

    nemo accipere quod non merere