http://www.perlmonks.org?node_id=251363

This is my first obfu, and my first JAPH, so it's prolly not really hard to crack. Go gentle on the --! :)
#!/usr/bin/perl -w use strict; my@JAPH = ('j','u','s','t',' ', 'a','n','o','t','h','e','r', ' ','p','e','r','l',' ', 'h','a','c','k','e','r',"\n"); @JAPH = sort(@JAPH); l('%%%%%%%%%%%%%');l('%%%%%%%%%%%%%%%%%%%%%%%%%'); l('#####################');l('%%%%%%%%%%%%%%%%%%%%%%%'); l('#');l('%%%%%');l('###############');l('%%%%%%%%%%%%%%%%%'); l('#######################');l('%%%%%%%%%%%');l('#######'); l('%%%%%%%%%%%%%%%%%%%');l('%%%');l('#################'); l('%%%%%%%%%');l('###################');l('%%%%%%%%%%%%%%%'); l('###');l('###########');l('#####');l('%%%%%%%'); l('#############');l('#########');l('%%%%%%%%%%%%%%%%%%%%%');l('%'); sub l{my$s={'#'=>0,'%'=>1};my@t=split/ */,$_[0];my$l=@t; print @JAPH[$l-$s->{$t[0]}];}

Any tips quite welcome

feanor_269

Replies are listed 'Best First'.
Re: first obfu japh
by Mr. Muskrat (Canon) on Apr 21, 2003 at 16:09 UTC

    ++feanor_269, this is pretty good for a first attempt!

    Suggestions for future obfuscations in no particular order:

    • Use built-in variables:
      • wherever possible
      • in unexpected ways
      • even if they are not needed
    • Shape the code to look like something even if it's only a rectangle because:
      • it makes you break your lines in unexpected places
      • it looks better
      • you might discover that you are an ASCII artist
    • Whitespace:
      • add it where it doesn't belong
      • remove it from where it does belong
    • Use commas in place of semicolons where allowed
    • Use the arrow operator in place of commas
    • Use short circuits
    • Study the work of the masters:
    • Read Writing highly obfuscated code in Perl and it's replies
    • Practice, practice, practice
    • Have fun!