Попросили сделать разбор одного примера из perl100 (ивент для первокуров компьютерных специальностей в нашем универе). Возможно, памятуя то, что одним из авторов разбора 3х-летней давности был я.
Точнее примеров мне дали несколько, но понравился этот
(*$,$_)=(sub{q&q&})x2;/./&print &$&$&; — собственно, вот он — пример.
# (*$,$_)=(sub{q&q&})x2;/./&print &$&$&;
# (*$,$_)=(sub{q&q&})x2;
*$ = sub{q&q&}; # теперь у неименованной процедуры появилось имя '$'
$_ = sub{q&q&}; # а в $_ - ссылка на эту функцию
# sub a {print 1};
# $_ = \&a;
# &{$_}
# print "\n$_";
# ^D
# 1
# CODE(0x225c98)
# /./&print &$ & $&; - вычисляем последовательно match
# (сравнение переменной по умолчанию с шаблоном), вычисляем print ,
# делаем побитовое "и" (последний шаг - для отвода глаз. с таким же
# успехом можно было поставить между сравнением и принтом ";")
$_ =~ m/./;
# $& - Последняя найденная подстрока при сопоставлении.
# В нашем случае это 'C' (цэ) (первый любой символ в строке "CODE(0x225c98)")
# ну и делаем побитовое "и" для результата работы функции $ и последней найденной строки
# ах да, функция вернёт последнее вычисленное значение
# в нашем случае это 'q'. Поясняю: q&q& эквивалентно q/q/. "&" - для отвода глаз.
$a = 'q' & 'C';
print $a;
# Разбор сделан Helios'ом
# Привет первокурам!
Вот такой он, добрый Perl, в «недобрых» руках
Мне понравилась эта заметка: