Подобно тому, как это возможно с перегруженными операторами, есть ли способ применить какое-то волшебство к переменной, чтобы следующее:
my $magic_var = ...;
some_function($magic_var);
приводило к чему-то вроде этого:
call_function(\&some_function, $magic_var)
Если some_function
не было определено, я мог бы просто использовать подпрограмму AUTOLOAD
для перехвата вызова, но когда он определен, я не знаю, как перехватить вызов (без чего-либосумасшедший, как вставка оболочек во все сабвуферы вызывающего или временное отмена определения всех сабвуферов).
Еще один способ выразить это: я хотел бы написать use overload sin => \&my_sin;
, но иметь sin
любую функцию ион вызывает nomethod
подобный sub всякий раз, когда перегруженный объект используется в вызове функции.
EDIT:
По популярному запросу причина, по которой я смотрел на это, заключалась в том, что я работаюна Perl5 версии Perl6 независимо от звезды.Однако, после более подробного изучения реализации Perl6, кажется, что она также не имеет отношения к функциям, вызываемым на Whatever
, поэтому мне не придется пытаться иметь дело с вызовами функций (только вызовы операторов и методов).
Если кому-то интересно, модуль включен на CPAN: Независимо от .
Обратная связь / Комментарии приветствуются.