Your points are true, but they probably need both repeatition
and clarification. I provide two examples to clarify your points,
for the earlier ones were too simple.
Example 1. Here we show that the our var can also
overide the scope of the my var: the winner is the one
who declares last:
my $foo = 1;
our $foo = 2;
print $foo ; # prints 2
The result will be different when we reverse the order of declaration:
our $foo = 2;
my $foo = 1;
print $foo ; # prints 1
Example 2. Here we show that inter-package scopes are only valid
during 'no strict'; plus, access to the our variable is
possible only if the LEXICAL scope of the our variable
is still in force (that is, it reins through the whole file and is
not limited just to a block):
no warnings;
package Foo;
use Data::Dumper;
{
our $foo = 'bar';
}
print 'Foo: '. $foo, "\n"; # prints 'bar'
package Bar;
no strict;
print 'Bar: '. $foo, "\n"; # $foo is undefined
Having already acknowledged that there were no mistatements in your post,
these exaples were meant only as repeatition to the concepts
you have already advanced. Same concepts through different examples.