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

Went to join the gridlock to see it
Held an eclipse party
Watched a live feed
I cn"t see tge kwubosd to amswr thus
I tried to see it, but 8000 miles of rock got in the way
What eclipse?
Wanted to see it, but they wouldn't reschedule it
Read the book instead