Hi When I moved all the variables within the subroutines outside, this script suddenly worked flawlessly.
What gives? Wasnt it highly desireable to "localize" variables to make it more organized? yet when i did just that, it fails to run. Only when I made all variables GLOBAL that it worked. This is wierd...... Dan On Thu, Sep 3, 2009 at 12:05 AM, Daniel Burgaud <burg...@gmail.com> wrote: > Hi All, > > Here is the message I got after using "use warnings;" and "use > diagnostics;". > > Variable "$number" will not stay shared at x.pl line 36 (#1) > (W closure) An inner (nested) named subroutine is referencing a > lexical variable defined in an outer subroutine. > > When the inner subroutine is called, it will probably see the value of > the outer subroutine's variable as it was before and during the *first* > call to the outer subroutine; in this case, after the first call to 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 subroutines > 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. > > Variable "$flag" will not stay shared at x.pl line 40 (#1) > Variable "%t" will not stay shared at x.pl line 48 (#1) > > Apparently, I dont understand the above and what it meant. It appears that > the variables inside the subroutine is being reused or wrongly used. > because i > am now getting this error: > > Tk::Error: Can't call method "configure" on an undefined value at x.pl line > 48. > Tk callback for .toplevel.frame.button5 > Tk::__ANON__ at C:/Perl/lib/Tk.pm line 252 > Tk::Button::butUp at C:/Perl/lib/Tk/Button.pm line 111 > <ButtonRelease-1> > (command bound to event) > > Line 48 is referring to: > $t{LZ}->configure(-text=>$number); > > 1st time it runs, no problem; 2nd time it gave that error as if the > variable > $t{LZ} does not exists. > > > Any idea where i am doing wrong? > > BTW. I cannot use withdraw/iconfy because the Keypress event will be used > on another > TopLevel and thus i have to destroy this toplevel everytime it leaves. > > Dan > > > > > On Wed, Sep 2, 2009 at 11:13 PM, Brian Raven <bra...@nyx.com> wrote: > >> From: perl-win32-users-boun...@listserv.activestate.com >> [mailto:perl-win32-users-boun...@listserv.activestate.com] On Behalf Of >> Daniel Burgaud >> Sent: 02 September 2009 15:27 >> To: Perl-Win32-Users >> Subject: need help with Tk: I could not figure the error >> >> > I have this test script below. >> > >> > A toplevel containing a button that invokes another toplevel. >> > The first time I invoke this second window, all works fine and returns >> properly without error. >> > >> > however, when I reenter again (clicking on "Get Number" button) I get >> this error message. >> > >> > Tk::Error: not a Tk object >> > Tk::die_with_trace at x.pl line 46 >> > main::AddNumber at x.pl line 66 >> > main::__ANON__ at C:/Perl/lib/Tk.pm line 252 >> > (eval) at C:/Perl/lib/Tk.pm line 252 >> > Tk::__ANON__ at C:/Perl/lib/Tk/Button.pm line 111 >> > Tk::Button::butUp at x.pl line 79 >> > (eval) at x.pl line 79 >> > main::GetNumber at x.pl line 17 >> > main::__ANON__ at C:/Perl/lib/Tk.pm line 252 >> > (eval) at C:/Perl/lib/Tk.pm line 252 >> > Tk::__ANON__ at C:/Perl/lib/Tk/Button.pm line 111 >> > Tk::Button::butUp at x.pl line 20 >> > (eval) at x.pl line 20 >> > Tk callback for .toplevel.frame.button5 >> > Tk::__ANON__ at C:/Perl/lib/Tk.pm line 252 >> > Tk::Button::butUp at C:/Perl/lib/Tk/Button.pm line 111 >> > <ButtonRelease-1> >> > (command bound to event) >> > >> > Hoping for help. >> > >> > thanks. >> > Dan >> > >> > >> > >> > >> ######################################################################## >> #################### >> > use strict; >> >> perl will give you a clue if you add "use warnings;" here. It will even >> give some advice if you make it "use diagnostics;". >> >> > use Tk; >> > ... >> >> HTH >> >> -- >> Brian Raven >> This e-mail may contain confidential and/or privileged information. If you >> are not the intended recipient or have received this e-mail in error, please >> advise the sender immediately by reply e-mail and delete this message and >> any attachments without retaining a copy. >> >> Any unauthorised copying, disclosure or distribution of the material in >> this e-mail is strictly forbidden. >> >> _______________________________________________ >> Perl-Win32-Users mailing list >> Perl-Win32-Users@listserv.ActiveState.com >> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs >> > >
_______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs