#!/usr/bin/perl
use strict;
use lib '.';
use Bar;
### Before and after snapshots.
print 'var before setting: (' . $Bar::package_variable . ")\n";
$Bar::package_variable = 'Ogopogo';
print 'var after setting: (' . $Bar::package_variable . ")\n";
### From an object.
my $obj = new Bar( );
print 'var from obj--unqualified: (' . $obj->{'unqualified'} . ")\n";
print 'var from obj--qualified: (' . $obj->{'qualified'} . ")\n";
print "\nAddresses:\n";
print '$Bar::package_variable '.\$Bar::package_variable."\n";
print '$obj->{"unqualified_ref"} '.\${$obj->{'unqualified_ref'}}."\n";
print '$obj->{"qualified_ref"} '.\${$obj->{'qualified_ref'}}."\n";
exit;
####
package Bar;
our $package_var;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
$self->{'unqualified'} = $package_var;
$self->{'qualified'} = $Bar::package_var;
$self->{'unqualified_ref'} = \$package_var;
$self->{'qualified_ref'} = \$Bar::package_var;
return $self;
}
1;
####
Package var before setting: ()
Package var after setting: (Ogopogo)
Package var from obj--unqualified: ()
Package var from obj--qualified: ()
Addresses:
$Bar::package_variable SCALAR(0x815363c)
$obj->{"unqualified_ref"} SCALAR(0x8188950)
$obj->{"qualified_ref"} SCALAR(0x8188950)