http://www.perlmonks.org?node_id=883167


in reply to Hiding trigger code from meta

Nobody did bite yet, so until someone with more knowledge or our ultimate authority for Moose stvn gets around to answer, I give you at least my best answer

I just read (in a book about Catalyst which uses Moose heavily) that there are two ways for private subroutines in Moose:

1) Use '_' before a subroutine name. This is only a convention, but in most cases it is evident that you should not use such a function outside the class

2) Use an anonymous subroutine (as you already found out). Don't think of it as cheating or second-rate subroutining ;-), it is a fine non-namespace-cluttering way to put a private subroutine into a class, the only drawback is that code reuse needs a bit more effort.

Also there is namespace::clean which can be used to forget those subroutine names again as soon as you don't need them anymore. I don't know if this would help in your case (it depends from whom you want to hide the trigger), but the module is worth a look