[SP-pm] Perl Quiz
Gabriel Andrade
gabiruh at gmail.com
Wed Feb 2 06:41:41 PST 2011
On Feb 2, 2011, at 9:54 AM, Stanislaw Pusep wrote:
> E nesse caso, vai imprimir o que?
>
> #!/usr/bin/perl
> eval eval '"'.
>
>
> ('['^'+').('['^"\)").( '`'|')')
> .('`'|'.').('['^'/').('{'^ '[' ).'('.
> '('."'".('`'^('&')). "'".(('{')^ (( '[')
> )).('['^'#'). ('{'^'[').('^'^('`' | '/')).
> (('^')^( '`'|"\.")).( ( '^')^('`'|
> (( ( '.'))) )) .( '^'
> ^ ( '`'|'.')).')' .('{'^ '['). ('.').( ((
> (( ( ( ( '{') ))))))^'[').'('. "'". ((( '{')
> )^ '.' )."\'".( '{'^'[') .('['^'#').( '{' ^((
> '[') )).+( ';'&'=' ). (('^')^( '`'| '.' )).
> ((( '^'))^( ( ('`'))| (( '.' ))) ).')' .
> ((( ( "\{")))^ '['). ( "\.").(
> '{' ^ (( '[' ))). ('('). ( (( "'"))).
> (( '!') )."'".(
> '{' ^'[' ).''. ('['^'#'
> ).+( ( (( ( '{')) ))^'[' ) .(('^')^(
> "\`"| (( ( (( ',') ))))) ).+( '^'^(
> '`'|'.')). "\)".( '{' ^+
> "\["). '.'.('{'^'[').'\\'. '"' .((
> '\\' )).'\\'.('`'|'.'). '\\'.
> '"'.')'.';'.('!'^'+').'"'
> ;$:='.'^'~';$~='@'
Pros que ainda estão coçando a cabeça (como eu, que ficava quando via códigos assim):
$ perl -MO=Deparse trollface.pl
eval eval qq["print (('F' x 1000) . ('U' x 900) . ('!' x 20) . \\"\\\\n\\");\n"];
$: = 'P';
$~ = '@';
A mágica desse código reside na possibilidade de se realizar operações bitwise sobre string de bits em perl.
'[' ^ '+' produz 'p'
'[' ^ "\)" produz 'r'
'`' | ')' produz 'i'
e assim por diante, até formar a string usada no 'eval'. O resto é usar a imaginação e ir inserindo espaços em branco no código pra formar o desenho.
Em python isso não iria dar certo... o parser daria chilique no primeiro parágrafo mal indentado.
More information about the SaoPaulo-pm
mailing list