in reply to Whew!

This worked fine for me in perl5.005_03 on one machine. On another machine, the characters involving $> were garbled, as mentioned in another response. This obfuscation depends on the effective UID being 500, which is not a reliable assumption.

On the machine where it worked in perl5.005_03, it didn't work at all in perl5.6.0. Most of the output was garbled. I've deduced that this is the result of a change in perl's hashing function between versions. This obfuscation depends on the keys/values of %t being returned in a certain order, which is also not a reliable assumption.

This is a nice obfuscation, but it is too platform and version dependent.

Replies are listed 'Best First'.
Re: Re: Whew!
by Kickstart (Pilgrim) on Feb 08, 2001 at 21:25 UTC
    Thanks for the heads up...this version fixes it. Also fixed the main version.

    $t='|.|/'; %t=("\|l"=>"z,", 'l',8888888888888,$t, '._sV888P^','~^9888ka-', '.-\Q889' , '888/z-', "-_J88f 188KJ-", "-:388l o o t888[=." ,".>88l j88E:._" ,"Z3886._ ,J.__.488R=;." ,"/288888888888888S^.", "j^7Z988888885R^L-", ,'./jQV9TYVR\[\~', "|~|! |~|~. " ,' l | ', ,'_ _ " , "._,', ".)_)._) (_.__,."); @Y=keys(%t);@Z=values(%t);sub sah{$x=shift;$x=~s/\s+//g; $x=~y/\!-\~/A-Fa-f/s;return hex($x)}foreach(@Y){$_=sah($_)} foreach(@Z){$_=sah($_)}$w=!$|;$dp.=chr(($Z[3]/62418209+$w)). chr($Y[6]/34-!$|).chr('1'.$Z[0]).chr(4*(($Z[7]+$Z[1])^3)). chr(!$|+!$|+2*$Y[0]).chr(substr($Y[6],0,2)*2). chr(substr(($Z[3]/$Y[3]),1,2).$Y[5]/2).chr((!hex($t).!$|.$w)+1). chr((!hex($t).!$|.$w)+1). chr(oct(4*($Y[0]*3^2*$Y[0]))-(substr($Z[3]/$Y[3],1,2))). chr(!$|+!$|+2*$Y[0]).chr('1'.$Z[0]-!$|).chr($Y[6]/34-!$|). chr(((abs($#t).abs($#t).hex($t))-(!$|+!$|))). chr(($Z[0]*8)-$#Y+4-$Z[1]+!$|).chr(($Z[0]*8)-$#Y+4*!hex($t)).'!'; print "$dp\n";
      Hmm, I still have problems (on this the fixed version) on a perl 5.6.0/LFS/PowerPC machine. Ideas?
      sfl¿¿¿¿¿ pp rles!

      --
      Laziness, Impatience, Hubris, and Generosity.