A relatively simple obfuscation for a relatively simple substitution cipher. This either takes a file as a parameter to encrypt in atbash, or provided no input encrypt's it's __DATA__.
#!/usr/bin/perl
open DATA,$ARGV[0]if$ARGV[0];$ ,=65;@ .=map$_,reverse chr$ ,..pack'c',$ .;$.=$,
+25;print join'',map{join'',map{$ *=ord>ord uc z?push(@%,/./)&&uc:push(@%,0)&&$
_;$ ^=$ *=~/[chr$,-chr$.]/?$.[(ord$*)-$,]:$*;$%[$;++]?lc$^:$^}split q,,,}
__DATA__
This is an implementation of an atbash (or 'zgyzhs') cipher, which encodes
strings by replacing 'a' with 'z', 'b' with 'y', etc. This is my test string.
This string includes CAPital letters, spaces, punctuation, and newlines. This
tests EVERY capability of this implementation.
$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack'c'=>$,+=$_}for(reverse split//=>$*
){$%++?$ %%2?push@C,$_,$":push@c,$_,$":(push@C,$_,$")&&push@c,$"}$C[$#C]=$/;($#C
>$#c)?($ c=\@C)&&($ C=\@c):($ c=\@c)&&($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}
perlmonks.org content © perlmonks.org and chargrill
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03