use strict;
use warnings;
use Employee
my $person = Employee->new();
$person->name("bob");
$name = $person->name;
print "hello, ";
print $name;
I get:
Global symbol "$person" requires explicit package name at test.pl line
+ 5.
Global symbol "$name" requires explicit package name at test.pl line 6
+.
Global symbol "$person" requires explicit package name at test.pl line
+ 6.
Global symbol "$name" requires explicit package name at test.pl line 8
+.
It's obvious that $name needs a declaration to make strict happy, but you could still sit and stare at the $person warnings and not realize why it's complaining.
The problem is the missing semi-colon after use Employee. The "my $person" line is taken as an import to request from Employee, and is executed at compile time in a scope all its own, so the rest of the program doesn't use a lexical $person, and the global $person isn't ever set. |