Perl: the Markov chain saw | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
You are mixing compile-time and run-time behavior. I respectfully disagree. my does have both compile time and run time effects. my always has a compile time effect to declare the presence of one or more variables. It also has a run time effect. Before a block of code is run, it is compiled, thus the variables are declared so the rest of the block can compile. When the block is run, the run time effect of my is applied. In this case, the compiler is complaining "Global symbol "$lib" requires explicit package name" which also means that there isn't a declaration in scope. This implies the my in the use statement is in a different scope. When you remember that use X LIST is equivalent to BEGIN { require X; X->import(LIST)' }, this makes sense. If you don't know that (or forget it), it can/will be a surprise. In the OP's example, the run time effect is not the problem. The following works because my does have an effect at compile time:
In reply to Re^2: Scope in use
by RonW
|
|