in reply to Re: Can't call method on an undefined value?
in thread Can't call method on an undefined value?
I don't actually think it will be necessarily apparent though. With test.pl:
I get:use strict; use warnings; use Employee my $person = Employee->new(); $person->name("bob"); $name = $person->name; print "hello, "; print $name;
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.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 +.
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Can't call method on an undefined value?
by dragonchild (Archbishop) on Apr 11, 2005 at 17:22 UTC | |
by ysth (Canon) on Apr 11, 2005 at 17:34 UTC | |
by dragonchild (Archbishop) on Apr 11, 2005 at 17:37 UTC |