Как бы написать функцию, которая принимает что-то вроде функции карты?Как передать функцию на Perl?
Пример:
$func = sub { print $_[0], "hi\n" };
&something($f);
sub something
{
my $func = shift;
for ($i = 0; $i < 5; $i++)
{ $func->($i); }
}
работает отлично.
но если бы я сделал
&something({ print $_[0], "hi\n" });
это не будет работать, и говорю, что функ является неопределенной ссылкой.
Таким образом, мой вопрос заключается в том, как написать функцию, которая принимает параметры, такие как функция перлов-карт?
map { s/a/b/g } @somelist;
+1. Мне нравится идея локализации $ _ с оператором «for» - позволяет 1-arg funcrefs быть красивым и лаконичным. (И я полагаю, вы могли бы «локально» ($ a, $ b); »для 2-arg funcrefs a la sort().) –