my %m_closure_for; # after the implementations have been defined foreach my $object (keys %m_implementation_for) { $m_closure_for{$object} = sub { $m_implementation_for{$object}($object, @_); }; } # terser wrapper sub m { my ($self, @args) = @_; $m_closure_for{$self}(@args); }