
Если интересно как создать свое «облачное» Perl приложение, прошу под кат.
Пользователь
print "Just another Perl hacker," if "you can't think of anything better..."
''=~('('.'?' . '{'.(
'/'.'/'.')'.'.'.'/'.
'`'.'|'.'`'.'.'.'.'.
'/'.'`'.'`'.'.'.'/'.
'/'.'('.':'.'/'.'`'.
'~'.':'.'/'.','.'`'.
'`'.':'.'>'.'+'.':'.
'/'.'|'^'_'.']'.'@'.
'@'.'['.'@'.'['.'*'.
'['.']'.'['.'@'.'!'.
'@'.'@'.'['.'@'.'_'.
']'.'@'.'.'.'_'.']'.
'@'.'@'.'('.'['.']'.
'@'.'_'.']'.'[').','
.'$' .'/'.'}'.')' );
not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort split
print qq q q
" "print qq q q
" "print qq s s
". qq говорит о том что последовательность ограниченная разделителем заключена в двойные кавычки. Разделителем тут являются символы q и s. Теперь код можно разделить на четыре части: not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor
int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor
int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and
eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort split
not exp log srand XOR
не выведет ничего на экран т.к. всегда будет ложь. s qq qx xor
эквивалентно s// /
Благодаря этой операции в переменной $_ окажется пробел. Следующая часть будет выглядеть так s/ /length uc ord and print chr ord for qw q join use sub tied q/
Эта операция заменит пробел в переменной $_ на length uc ord and print chr ord for qw q join use sub tied q
. length uc ord and
всегда истина, в расчет не берем. а вот print chr ord for qw q join use sub tied q
как раз и напечатает слово «just». Это станет виднее, если преобразовать к следующему виду: print chr ord for('join','use','sub','tied')
. Работает это так: for перебирает слова из массива, ord получает код только первого символа каждого слова, а chr обратная к ord функция, возвращает символ по коду. Затем eval выполнит содержимое переменной $_ (как раз и выведет just), а print qq q q
выведет пробел. Оставшиеся части разбираются по тому же принципу.