Yes, I understand that it's extremely simple and can probably be done in less than one line. But hey, give me a break! It took me a little while to come up with something slightly clever, and I'm proud of what I managed. Sorry, no ``JAPH'' this time.
And if you're wondering, this was my (also) sad attempt at an ASCII birthday cake.
$_='
$
_
=
\'})fer(fi)]1[>-_$x
)]0[>-_$(rhc(tnirp;
fer!fi)_$rhc(tnirp{
)_@(hcaerof;)01,121
,79,001,401,611,411
,501,89,23,121,]2,2
11[,79,401(=_@\';ev
al(reverse(split(//
)))';s/\s//g;eval##
Constructive criticism is greatly appreciated.
I golfed it down a little and furthered the obfuscation a bit as well, but kept your basic premise. The golfing removes some of the easy readability of your original code garnered by running the likes of:
sed s/eval/print/ mpeg.pl | perl | sed s/eval/print/ | perl | perl -MO=Deparse
Which of course gives us an easy to read, and easy to understand:
@_ = (104, 97, [112, 2], 121, 32, 98, 105, 114, 116, 104, 100, 97, 121, 10);
foreach $_ (@_) {
print chr $_ if not ref $_;
print chr($$_[0]) x $$_[1] if ref $_;
}
$
_
=
'
$
_
=\')01,121,79,001
,401,611,411,501,
89,23,121,]2,211[
,79,401(rof)rhc:]
1[_$$x)]0[_$$(rhc
?)fer((tnirp\';s,
,reverse,ee';s'\s
'$_'geex;m,,mgsix
And I just noticed that my version seems a bit harder to handily pick apart with sed | Deparse (or variation thereof) - the de-obfuscator needs to do a bit more work.
$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack'c'=>$,+=$_}for(reverse split//=>$*
){$%++?$ %%2?push@C,$_,$":push@c,$_,$":(push@C,$_,$")&&push@c,$"}$C[$#C]=$/;($#C
>$#c)?($ c=\@C)&&($ C=\@c):($ c=\@c)&&($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}
perlmonks.org content © perlmonks.org and chargrill, mpeg4codec
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03