package MyTst; use warnings; use strict; our $Object; sub import { my $class = shift; $Object = shift; { no strict 'refs'; *{caller().'::transaction'} = \&transaction; } } sub transaction(&) { $$Object->begin(); shift()->(); $$Object->end(); } 1;