in reply to "Variable will not stay shared" warning
Variable ``%s'' will not stay shared (W closure) An inner (nested) named subroutine is referencing a le +xical variable defined in an outer subroutine. When the inner subroutine is called, it will probably see the valu +e of the outer subroutine's variable as it was before and during the *f +irst* call to the outer subroutine; in this case, after the first call t +o the outer subroutine is complete, the inner and outer subroutines will + no longer share a common value for the variable. In other words, the variable will no longer be shared. Furthermore, if the outer subroutine is anonymous and references a lexical variable outside itself, then the outer and inner subrouti +nes will never share the given variable. This problem can usually be solved by making the inner subroutine anonymous, using the sub {} syntax. When inner anonymous subs that reference variables in outer subroutines are called or referenced, + they are automatically rebound to the current values of such variables.
--
John.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: "Variable will not stay shared" warning
by George_Sherston (Vicar) on Aug 07, 2002 at 21:47 UTC |