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


in reply to 'our' is not 'my'

There is a catch with our that doesn't exist with use vars:

package AA; $AA::var = __PACKAGE__; our $var; print "$var\n"; package BB; $BB::var = __PACKAGE__; print "$var\n"; # Prints 'AA'.

Using curlies when using multiple packages in one file avoids the problem.

{ package AA; $AA::var = __PACKAGE__; our $var; print "$var\n"; } { package BB; $BB::var = __PACKAGE__; print "$var\n"; # Compile error! }

Keeping that exception in mind, our is like no strict 'vars'; on a per-var basis.