I think you have it there. A variable of the same name exists in main and in ora. So you have to spell out which one you mean. Perhaps this will help:
#!/usr/bin/perl
use strict;
use warnings;
# package main (default);
our $ora_errstr = 'main';
{
package ora;
our $ora_errstr = 'ora';
print "package ora\n";
print "\$ora_errstr: $ora_errstr\n";
print "\$main::ora_errstr: $main::ora_errstr\n";
print "\n\n";
}
package main;
print "package main\n";
print "\$ora_errstr: $ora_errstr\n";
print "\$ora::ora_errstr: $ora::ora_errstr\n";
__DATA__
---------- Capture Output ----------
> "C:\Perl\bin\perl.exe" _new.pl
package ora
$ora_errstr: ora
$main::ora_errstr: main
package main
$ora_errstr: main
$ora::ora_errstr: ora
> Terminated with exit code 0.
|