in reply to Re: Getting file and line number where a subroutine is declared
in thread Getting file and line number where a subroutine is declared
Perhaps another monk can explain this behavior.
\&Foo::some_sub autovivifies a sub stub at run-time (just like sub Foo::some_sub; would at compile-time).
$ perl -le' print(exists(&Foo::some_sub)?1:0, defined(&Foo::some_sub)?1:0); $x=\&Foo::some_sub; print(exists(&Foo::some_sub)?1:0, defined(&Foo::some_sub)?1:0); eval "sub Foo::some_sub { print \"foo\" }"; print(exists(&Foo::some_sub)?1:0, defined(&Foo::some_sub)?1:0); $x->(); ' 00 10 11 foo
As demonstrated, this permits the reference to be taken to a sub that has yet to be defined.
\&Foo::some_sub creates glob entry at compile-time.
$ perl -le' print(exists($Foo::{not_a_sub})?1:0); print(exists($Foo::{some_sub})?1:0); $x=\&Foo::some_sub; ' 0 1
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Getting file and line number where a subroutine is declared
by kyle (Abbot) on Feb 02, 2009 at 19:19 UTC | |
by ikegami (Patriarch) on Feb 02, 2009 at 19:32 UTC |