in reply to OOP By Any Other Name

Be careful. If any of the anon subs capture %external or a variable that references %external (directly or indirectly), you'll have a memory leak. The destructor should empty %external to kill any reference loops.