in reply to 'Our' limits?

I think you'll still have to reference the package that the 'our' variable is declared in. The doc is just saying that you can see the 'our' variable in other packages. It doesn't state how you have to refer to it. (See $Foo::d below)
package Foo; sub top { my($fn) = @_; our($d) = ["a", "b"]; printf "Top before %s [%s]\n", $d, join(",", @$d); $fn->($d); printf "Top After %s [%s]\n", $d, join(",", @$d); } package Bar; Foo::top(sub { our($d) = @_; printf " Before %s [%s]\n", $d, join(",", @$d); $Foo::d = []; printf " After %s [%s]\n", $d, join(",", @$d); }); --(0)> perl test.pl Top before ARRAY(0x8144234) [a,b] Before ARRAY(0x8144234) [a,b] After ARRAY(0x8144234) [a,b] Top After ARRAY(0x81442dc) []