http://qs321.pair.com?node_id=1051452

Starting my foray into JAPH to explore various aspects and corners of the language. Not necessarily obfuscated, but more using different aspects of Perl to accomplish the goals of a JAPH. 4x79 code max, Just another Perl hacker, output to stdout. I am hoping to explore a different technique each day, but it will probably devolve to one a week.

This implementation is pretty obvious how it works, but it uses the DESTROY method of object destruction to output the characters of the output.

@x = map{ x($_) } split('','Just another Perl hacker,'); shift(@x) while @x; sub x{ bless \$_[0],"x"} sub x::DESTROY{print ${$_[0]}}

--MidLifeXis

Replies are listed 'Best First'.
Re: Destructive JAPH
by Grimy (Pilgrim) on Sep 03, 2013 at 18:04 UTC

    I wish you good luck on your journey through the darkest corners of Perl.

    Here’s a golfed and obfuscated JAPH using the DESTROY trick:

    sub'DESTROY{print${+pop}}bless\$_,for',rekcah lreP rehtona tsuJ'=~/./g

    The second argument of bless defaults to ::main, which is the package where subs declared without a package prefix go to. You don’t need the temporary array: the SV’s are still created and blessed even if map is used in void context (other built-ins, like sort, won’t let you do this). This causes them to be GC’d in reverse order, though.