goibhniu has asked for the wisdom of the Perl Monks concerning the following question:
In my crypto hobby we create Ciphertext to plaintext alphabets. I've written the below to feature the key subroutine. I'm wondering if the foreach loops can be adapted to map functions or whether the if (not exists . . . invalidates map for use in this case.
#!/usr/bin/perl -w use strict; use warnings; my %p2C; my %C2p; sub key { my $kp= shift; my $caesar= shift; my $a=0; my $k; $p2C{' '}=' '; $C2p{' '}=' '; foreach (split(//, $kp)) { if (not exists $p2C{$_}) { #print $_; $k=chr(ord('A')+(($a++)+$caesar)%26); $p2C{$_}=$k; $C2p{$k}=$_; } } foreach ('a'..'z') { if (not exists $p2C{$_}) { $k=chr(ord('A')+(($a++)+$caesar)%26); $p2C{$_}=$k; $C2p{$k}=$_; } } } sub printKeys { my $href = shift; print "\nCT: "; print(($_).' ') foreach (sort keys %{$href}); print "\npt: "; print(($$href{$_}).' ') foreach (sort keys %{$href}); print "\n"; } key ('thequickbrownfoxjumpsoverthelazydogs',10); printKeys(\%p2C); printKeys(\%C2p); print "----------------------------------------------------------\n"; undef %p2C; undef %C2p; key ('thequickbrown',10); printKeys(\%p2C); printKeys(\%C2p);
produces the following:
C:\chas_sandbox>keyonly.pl CT: a b c d e f g h i j k l m n o p q r s t u v w x y z pt: F S Q I M X J L P Z R E A W U B N T C K O D V Y H G CT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z pt: m p s v l a z y d g t h e q u i c k b r o w n f x j ---------------------------------------------------------- CT: a b c d e f g h i j k l m n o p q r s t u v w x y z pt: X S Q Y M Z A L P B R C D W U E N T F K O G V H I J CT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z pt: g j l m p s v x y z t h e q u i c k b r o w n a d f C:\chas_sandbox>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: adapting foreach to map
by dogz007 (Scribe) on Aug 17, 2007 at 04:09 UTC | |
by goibhniu (Hermit) on Aug 17, 2007 at 14:22 UTC | |
|
Re: adapting foreach to map (why?)
by tye (Sage) on Aug 17, 2007 at 03:27 UTC | |
by goibhniu (Hermit) on Aug 17, 2007 at 14:18 UTC | |
by goibhniu (Hermit) on Aug 18, 2007 at 09:06 UTC |