Acme-Smirch
view release on metacpan or search on metacpan
package Acme::Smirch;
$VERSION = '0.91';
sub famous { $_[0] =~ /[A-Za-z0-9 ]/ }
sub smear {
($celebrity) = @_;
open CLEAN, $celebrity or die "Could not smear the good name of $celebrity\n";
undef $/; $_ = <CLEAN>;
print "$celebrity already smeared\n" and exit unless famous $_;
@dirt = qw&@- /. ~~ ;# ;; ;. ,. ); () *+ __ -( /@ .% /| ;_&; s/(.)/$dirt[ord($1)>>4].$dirt[ord($1)&15]/egs;
open A, ">$celebrity" or print "Could not smear the good name of $celebrity\n\n" and exit;
print A q#$==$';$;||$.|$|;$_='*$(^@(%_+&# . $_ . '&$#%^';print A <<'FILTH' and exit;;
';$__='`'&'&';$___="````"|"$[`$["|'`%",';$~=("$___$__-$[``$__"|"$___"|("$___$__-$[.%")).("'`"|"'$["|"'#").'/.*?&([^&]*)&.*/$'.++$=.("/``"|"/$[`"|"/#'").(";`/[\\`\\`$__]//`;"|";$[/[\\$[\\`$__]//`;"|";#/[\\\$\\.$__]//'").'@:=("@-","/.","~~",";#",";;","...
FILTH
}
1;
__END__
=head1 NAME
Acme::Smirch - For I<really> dirty programs
=head1 SYNOPSIS
use Smirch;
Smirch::smear("tooClean.pl");
=head1 DESCRIPTION
If you have not yet seen the most clever Acme::Bleach.pm by Damian
Conway, go see that B<now>. The only trouble with showing off Bleach
to your friends is that it requires Bleach to be installed on their
machines. So here is Smirch, that does the converse of Bleach -
rewrites your program using only non alphanumeric characters BUT it
does not depend on any external module! That's right - complete perl
without numbers or letters.
After you have Smirched a program, the program continues to work as
before except now it is absolutely unreadable as the module removes
all I<sightly> characters from your source file.
The Smirched program has to sit in a file of its own - you cannot run
a smirched program by piping it to perl.
You can now reform your source to look like this:
$==$';
$;||$.| $|;$_
='*$ ( ^@(%_+&~~;# ~~/.~~
;_);;.);;#) ;~~~~;_,.~~,.* +,./|~
~;_);@-, .;.); ~ ~,./@@-__);@-);~~,.*+,.
/|);;;~~@-~~~~;;(),. ;.,./@,./@,.;_~~@-););,.
;_);~~,./@,.;;;./@,./ |~~~~;#-(@-__@-__&$#%^';$__
='`'&'&';$___="````" |"$[`$["|'`%",';$~=("$___$__-$[``$__"|
"$___"| ("$___$__-$[.%")).("'`"|"'$["|"'#").
'/.*?&([^&]*)&.*/$'.++$=.("/``"|"/$[`"|"/#'").(";`/[\\`\\`$__]//`;"
|";$[/[\\$[\\`$__]//`;"|";#/[\\\$\\.$__]//'").'@:=("@-","/.",
"~~",";#",";;",";.",",.",");","()","*+","__","-(","/@",".%","/|",
";_");@:{@:}=$%..$#:;'.('`'|"$["|'#')."/(..)(..)/".("```"|"``$["|
'#("').'(($:{$'.$=.'}<<'.(++$=+$=).')|($:{$'.$=.'}))/'.("```;"|
"``$[;"|"%'#;").("````'$__"|"%$[``"|"%&!,").${$[};`$~$__>&$=`;$_=
'*$(^@(%_+&@-__~~;#~~@-;.;;,.(),./.,./|,.-();;#~~@-);;;,.;_~~@-,./.,
./@,./@~~@-);;;,.(),.;.~~@-,.,.,.;_,./@,.-();;#~~@-,.;_,./|~~@-,.
,.);););@-@-__~~;#~~@-,.,.,.;_);~~~~@-);;;,.(),.*+);;# ~~@-,
./|,.*+,.,.);;;);*+~~@-,.*+,.;;,.;.,./.~~@-,.,.,.;_) ;~~~
~@-,.;;,.;.,./@,./.);*+,.;.,.;;@-__~~;#~~@-,.;;,.* +);;
( run in 3.208 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )