$foo::bar is a "package variable", sometimes referred to as a "global", although IMHO I prefer at least "package global", because the variable does belong to the package - see perlmod. our makes it so that the name $bar refers to $foo::bar in the lexical scope it is used. Outside of package foo;, you need to either refer to it by its full name $foo::bar, or you need to make a local alias to it, as for example is possible with Exporter; there are more ways to do it but these are the two I prefer depending on the situation. Here's an example for the latter:
foo.pm
package foo; use warnings; use strict; use Exporter 'import'; our @EXPORT_OK = qw/$bar/; our $bar = 42; 1;
script.pl
use warnings; use strict; use feature 'say'; use foo qw/$bar/; say $bar;
In reply to Re: Unclear about 'our'
by haukex
in thread Unclear about 'our'
by ibm1620
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |