Добрый Perl :)

Попросили сделать разбор одного  примера из 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, в «недобрых» руках :)

Мне понравилась эта заметка:
Другое:
  • комнатные растения
  • Металлургический бюллетень: сдать черный металл.
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>