anazawa has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks, I'm working on the following situation:
Ryo
A package Foo calls Bar's bar() method. Foo defines foo() method which prints a message to STDERR. On the other hand, Bar.pm looks as follows:# Foo.pm package Foo; use strict; use warnings; use Bar; sub foo { warn 'Foo::foo was called' } Bar->bar; 1;
Bar defines bar() method which calls Foo's foo() method. I executed Foo.pm and confirmed the script output 'Foo::foo was called':# Bar.pm package Bar; use strict; use warnings; sub bar { Foo->foo } 1;
$ ls Foo.pm Bar.pm $ perl Foo.pm Foo::foo was called
This result shows us that Bar can call Foo's foo() method without loading Foo.pm (I mean, without 'use Foo;') In other words, Bar can call the caller's method ( Foo::foo() ). If so, why is this possible? Is this one of well-known specifications? Which perldoc helps me understand this result?
Sincerely,Ryo
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Calls the caller's method
by tobyink (Canon) on Jul 10, 2012 at 16:16 UTC | |
by anazawa (Scribe) on Jul 10, 2012 at 17:48 UTC | |
Re: Calls the caller's method
by daxim (Curate) on Jul 10, 2012 at 15:56 UTC | |
by anazawa (Scribe) on Jul 10, 2012 at 17:43 UTC |
Back to
Seekers of Perl Wisdom