### Re: PM Obfu

by husoft (Monk)
 on Oct 12, 2002 at 18:36 UTC ( #204798=note: print w/replies, xml ) Need Help??

Can you explain a few things I don't understand?

- First thing I don't understand is this way of making
subs (sub'i, sub'p, sub'f) what's the main difference
from the sub i{..}.

- Second, in this line : \;\$m.="\$/\$/\$/\$/\$/\$/1; I don't
really get what you are doing there.

- Third, \$/\$/\$/\$/\$/\$/\$/";; why ;;?

#!/usr/bin/perl \$m=q\\$g=59; \$s=23; @v=(\$",\$",'.',';','x','X','M'); \$t=[map{[(split('',\$_))[0..\$g]]}reverse+split(\$/,\$m)]; sub'i{ (\$b)=@_; \$b->[0]=[(0)x(\$g+1)]; for(@{\$b->[0]}){ \$_=\$#v*(int(rand(7))<3); } for(1..(\$s)){ @{\$b}[\$_]=[(0)x(\$g+1)]; } } sub'p{ (\$b)=@_; system(\$^O=~/MSWin32/ ? 'cls': 'clear'); \$str=''; for \$r(reverse(0..\$s)){ for \$c(0..\$g){ \$str.=(\$t->[\$r][\$c]eq\$"?\$":@v[int \$b->[\$r][\$c]]); }\$str.=\$/; } print \$str; } sub'f{ (\$x)=@_;\$b=[];i(\$b); for \$r(1..(\$s-1)){ for\$c(1..(\$g-1)){if(int(rand(2))){ \$v=0;for\$ri(-1..1){ for\$ci(-1..1){ \$v+=\$x->[\$r+\$ri][\$c+\$ci]; } } \$b->[\$r][\$c]=\$v/9; }else{ \$b->[\$r][\$c]=\$x->[\$r-1][\$c];}}} return \$b; } \$z=[]; i(\$z); p(\$z); while(1){ \$z=f(\$z); p(\$z); } \;\$m.="\$/\$/\$/\$/\$/\$/1; \$/\$/\$/\$/\$/\$/\$/";; s//\$m/; s/\$"//g; s|\$/||g; eval

Replies are listed 'Best First'.
Re: Re: PM Obfu
by Felonious (Chaplain) on Oct 12, 2002 at 19:07 UTC
1) sub'i{} means the same as sub main::i {}, in this case it's used to get rid of the space (important because spaces are used as a mask).
2 and 3) these serve as filler to make the code rectangular and for tweaking the position of the mask over the output.

[TINPC@perlcabal.com shh]\$ su real

Create A New User
Node Status?
node history
Node Type: note [id://204798]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
As of 2018-02-22 11:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When it is dark outside I am happiest to see ...

Results (291 votes). Check out past polls.

Notices?