Perhaps that title would benefit from perl -ne "$_=~s/(\));/;\1/;print"

Just for fun I was looking at perl58.dll from Strawberry Perl in a hex editor. I guess that shows how obfuscated my brain was at the time. Anyhow, I got inspired to write this JAPH. Golfers might be able to get it shorter.

@z=('"my %h;1 if defined(%h);"','"my %h=(c=>0);*ENV=\\%h;system(\'echo + $ENV{c}\');"','"require v9;"', '"my $b=0;$b->d();"');$s=sub{($c,$p)=@_;$c='perl -WTe '.$c.' 2>&1';$e= +`$c`;@w=split/ /,$e;$w[$p]}; %l=(0,9,1,4,2,0,3,[4,6]);$\=' ';print &$s($z[$_],$l{$_})for(0..2);unde +f $\;$o='';$o.=&$s($z[3],$l{3}[$_]) for(0..1);@o=$o=~/./g;print $o[3],@o[8..10];$o=&$s($z[2],5);@o=$o=~/./ +g;print $o[-1]

Update: added the space requested by jdalbec.

Update: ++LassiLantar and jdalbec and thanks for the alternate versions. I done some more research and found


I humbly seek wisdom.

Replies are listed 'Best First'.
Re: There are errors in this JAPH );
by jdalbec (Deacon) on Nov 04, 2007 at 01:57 UTC
    In Mac OS X 10.4.10 Perl 5.8.6:

    You need a space before 2>&1 so the shell knows that's not part of the $c argument. You also need to escape the $ characters because the shell interprets them as variable references when unquoted or when inside double quotes.

    Even with those changes I get only just  Perl hack,. What error message do you expect $z[1] to generate?

      Sorry about that. I admit to having a blindspot in Macs. I don't have one and don't have access to one at work. Per your inquiry:

      I get

      %ENV is aliased to another variable while running with -T switch at -e + line 1.

      for $z[1].

      I tried investigating this and it may be that that warning was added as a patch to 5.8, but I can't find what version it was added. (Google hits go back to 2004). Also it has to do with Tainting, so maybe something about the -T is getting messed up (like the space needed before the 2>&1). Does a Mac have an %ENV hash in the OS?

      Update: I tried it on Perl V5.8.7 on Cygwin and $z[1] gives "Use of uninitialized value in concatenation (.) or string at -e line 1." and "Insecure $ENV{PATH} while running with -T switch at -e line 1." after messing around with the quote characters to get it to run at all, so this japh is (very unfortunately) very OS and Perl version dependent. I'll look into another way to generate "another" from the internals, but as I recall there weren't very many.


      I humbly seek wisdom.
Re: There are errors in this JAPH );
by LassiLantar (Monk) on Nov 06, 2007 at 07:24 UTC

    This JAPH is lovely, but I haven't a Perl environment in which it works as written. Here's a bit of analysis and a fix which makes it work on my system.