Here is a JAPH using translations, built under the following rules:

  1. One line of less than 80 chars
  2. Obfu (duh)
  3. Prints the exact string 'Just another Perl hacker,' (sans quotes)
  4. Works with use strict;
s//KVTU!BOPUIFS!QFSM!IBDLFS./;y/[KQ.!][B-JL-PR-Z]/[JP, ][a-ik-oq-z]/;p +rint

Update: If one wishes to add the "\n" to the string, I submit this:
s//KVTU!BOPUIFS!QFSM!IBDLFS. /;y/[KQ.! ][B-JL-PR-Z]/[JP, \n][a-ik-oq-z +]/;print

I would be interested if anyone can comment on ways to make this even shorter or more interesting. I'm still fairly new to Ob-fu. ;-)

radiantmatrix
require General::Disclaimer;
s//2fde04abe76c036c9074586c1/; while(m/(.)/g){print substr(' ,JPacehklnorstu',hex($1),1)}

Replies are listed 'Best First'.
Re: Found in translation: JAPH
by blazar (Canon) on Dec 14, 2004 at 10:34 UTC
    Well, (i) it's less than 80 chars, (ii) it's indeed obfuscated, (iii) it does print that string, although I think it's preferrable if possible to print \n as well, (iv) it's obviously strict safe.

    Said this, IMO it's rather too naive and "transparent". However I suspect you can't do much better in such a small space.

    Personally I'd use all lowecase letters and use some trick to turn it into the wanted string, a la:

    s/\w+/$|--?$&:ucfirst$&/ge; # or s/\w+/$&^($|--?'':"\x20")/ge;

      Not obfu enough,eh? I played a bit and came up with this:

      s..s::KVTU!BOPUIFS!QFSM!IBDLFS,:;y|KQ!B-JL-PR-Z|JP a-ik-oq-z|;s||print +|e.e

      How's that?

      radiantmatrix
      require General::Disclaimer;
      s//2fde04abe76c036c9074586c1/; while(m/(.)/g){print substr(' ,JPacehklnorstu',hex($1),1)}

        s..s::KVTU!BOPUIFS!QFSM!IBDLFS,:;y|KQ!B-JL-PR-Z|JP a-ik-oq-z|;s||print +|e.e
        chip shot:
        s..s::KVTU!BOPUIFS!QFSM!IBDLFS,:;y|KQ!B-Z|JP a-z|;s||print|e.e
        ++obfu(ASCII-only):
        s..s::KVTU!BOPUIFS!QFSM!IBDLFS,:;y|KQ!>-[|JP ]-{|;s||print|e.e
        but this still leaves the problem of the off-by-one Caesar cipher embedded in the code. See if you can't come up with something less obvious.
Re: Found in translation: JAPH
by ysth (Canon) on Dec 14, 2004 at 10:55 UTC
    Brackets don't do anything special in a transliteration, the whole thing is a character class. So:
    s//KVTU!BOPUIFS!QFSM!IBDLFS./;y/KQ.!B-JL-PR-Z/JP, a-ik-oq-z/;print
    You can get it warnings-friendly and get a newline printed too doing:
    s//KVTU!BOPUIFS!QFSM!IBDLFS./,y/KQ.!B-JL-PR-Z/JP, a-ik-oq-z/,print for +$/