in reply to Re^2: Unclear about 'our'
in thread Unclear about 'our'
Hopefully, this code will clarify:
FOO.pm
pm11149136.plpackage FOO; use warnings; use strict; use Exporter 'import'; our @EXPORT_OK = qw/$bar $baz Baz_Get_Set/; our $bar = 42; # Package global, visible as $FOO:bar my $baz = 66; # Not visible outside FOO - needs accessor sub sub Baz_Get_Set{ defined $_[0] and $baz=$_[0]; return $baz; } 1;
OUTPUT:use warnings; use strict; use feature 'say'; use lib "."; use FOO qw/$bar $baz Baz_Get_Set/; say "\$bar (an imported 'package' variable)=",$bar; say "\$bar (accessed explicitly via package name \$FOO::bar)=",$FOO::b +ar; $bar="Set via caller"; say "\$bar (accessed explicitly via package name \$FOO::bar after sett +ing via imported var)=",$FOO::bar; say "\$baz (direct attempt to access package 'my` variable)=",$baz; # +This returns UNDEF say "BAZ via getter/setter=",Baz_Get_Set(); # Nothing passed - this is + a GET say "BAZ get after setting to 55=", Baz_Get_Set(55);
</c>bash-5.1$ perl pm11149136.pl $bar (an imported 'package' variable)=42 $bar (accessed explicitly via package name $FOO::bar)=42 $bar (accessed explicitly via package name $FOO::bar after setting via + imported var)=Set via caller Use of uninitialized value $baz in say at pm11149136.pl line 11. $baz (direct attempt to access package 'my` variable)= BAZ via getter/setter=66 BAZ get after setting to 55=55
"These opinions are my own, though for a small fee they be yours too."
|
|---|