#!/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); #### 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>