use Safe; $cpt = new Safe; # create a new safe compartment ***** $cpt = new Safe; sub wrapper { ;# vet arguments and perform potentially unsafe operations } $cpt->share('&wrapper'); # see share method below ***** $cpt = new Safe NAMESPACE, MASK; ***** $cpt = new Safe 'Root'; $Root::foo = "Hello world"; # Equivalent version which doesn't need to know $cpt's package name: ${$cpt->varglob('foo')} = "Hello world";