Was bored tonight, so figured I'd do another of these.
$_="415250511528293422193223122519645759676174";$_{$_}++;$}=[];(split/ +/,$});push@a,$&while s;..;;;@}=map$_,@_;{@_=map @}->[$_],(0..5);}$j=j +oin'',map (chr((ord$_[0])+$_),(@a[0..3]));$a=join'',map(chr((ord$_[1] +)+$_),(@a[4..10]));$p=join'',map(chr((ord$_[4])+$_),(@a[11..14]));$h= +join'',map(chr((ord$_[5])+$_),(@a[15..20])); print join' ',$j,$a,$p,$h,"\n";

Replies are listed 'Best First'.
Re: 2nd obfu
by iamcal (Friar) on Jun 06, 2001 at 17:06 UTC
    Quite hard to see what's going on with the use of nasty variables $} and @}.

    A brief breakdown:
    # put some numbers into $_ $_="415250511528293422193223122519645759676174"; # fluff $_{$_}++; # set $} to an array ref $}=[]; # split the chars of this ref : A R R A Y ( 0 x 8 a 6 f 0 a c ) @_ = (split//,$}); # split each set of two chars in $_ into @a push(@a,$&) while s;..;;; # set @} to contain the chars from @_; @}=map$_,@_; # set @_ to the first 6 chars of @}, which are "ARRAY(" {@_=map @}->[$_],(0..5);} # into each scalars, put characters built from the @a and @_ $j=join'',map(chr((ord$_[0])+$_),(@a[0..3])); $a=join'',map(chr((ord$_[1])+$_),(@a[4..10])); $p=join'',map(chr((ord$_[4])+$_),(@a[11..14])); $h=join'',map(chr((ord$_[5])+$_),(@a[15..20])); # print out the four scalars print join' ',$j,$a,$p,$h,"\n";
Re: 2nd obfu
by tachyon (Chancellor) on Jun 06, 2001 at 17:48 UTC

    Interesting use of ARRAY(0x...) reference value in scalar context to provide a series of offsets. Also liked the (split//,$}) to assign to @_ although just(split//,[]) would have made me think really hard for a while (how do you split an anon array ref??) so might have been a bit more obfu.

    Here is the decode

    tachyon

    $_="415250511528293422193223122519645759676174"; # $_{$_}++; # no effect # $}=[]; # $} has scalar val ARRAY(0x..) # (split//,$}); # assign @_ = qw(A R R A Y ( ...) # @}=map$_,@_; # @}=@_; # {@_=map @}->[$_],(0..5);}# @_ = first 6 elements @_ # net effect of all of the above commented out code @_=qw/A R R A Y (/; # push@a,$&while s;..;;; push @a, $1 while /(..)/g; # load @a with 41,52.... #$j=join'',map (chr((ord$_[0])+$_),(@a[0..3])); #$a=join'',map(chr((ord$_[1])+$_),(@a[4..10])); #$p=join'',map(chr((ord$_[4])+$_),(@a[11..14])); #$h=join'',map(chr((ord$_[5])+$_),(@a[15..20])); # #print join' ',$j,$a,$p,$h,"\n"; # this is the same as the above code print chr(65+$_) for @a[0..3]; print $"; # prints a space by default print chr(82+$_) for @a[4..10]; print $"; print chr(89+$_) for @a[11..14]; print $"; print chr(40+$_) for @a[15..20]; print $"; # this is almost the same, but no spaces :-( @offset = ((65)x4,(82)x7,(89)x4,(40)x6); map{print chr($a[$_]+$offset[$_])}0..20;