Нужно нечто вроде того что в С++ можно реализовать как объект класса с перегруженным operator()
Например — пишу функцию которая ищет минимум некой функции:
sub find_minimum_via_direct_search { my $objective_function = shift; ............... }
то есть find_minimum получает аргумент $objective_function которая может быть ссылкой на функцию. Потом чтобы получить значение функции в точке $point мы можем написать $objective_function->($point)
Проблема в том что я не могу написать objective_function прямо как функцию — мне нужно добавить туда некий стейт. Глобальные переменные понятно не годятся. Можно передавать дополнительный аргумент для этой функции, но это тоже несимпатично. Как завернуть в одну переменную функцию+стейт и чтобы ее было естественно вызывать?