Я бы просто использовал класс для этого.Благослови ссылку на подпрограмму и продолжай использовать ее, как и ты.get_resource
затем использует этот класс.Так как я не знаю, как это выглядит, я оставлю это на ваше усмотрение, чтобы интегрировать это:
package Gozer {
sub new {
my( $class, $subref );
bless $subref, $class;
}
sub DESTROY {
...; #cleanup
}
}
Если каждая вещь может иметь свою собственную очистку, я бы использовал класс для группировки дваКод ссылки:
package Gozer {
sub new {
my( $class, $subref, $cleanup );
bless { run => $subref, cleanup => $cleanup }, $class;
}
sub DESTROY {
$_[0]{cleanup}();
}
}
В Perl я не думаю, что это тяжеловес.Система объектов просто прикрепляет ярлыки к ссылкам.Не каждому объекту нужно что-то моделировать, так что это идеальный объект.
Было бы неплохо иметь какие-то финализаторы для обычных переменных, но я думаю, что в конечном итоге это будет одно и то же,топологически.Вы можете сделать это с Perl как tie
, но это снова просто объект.