legova has asked for the wisdom of the Perl Monks concerning the following question:
I have a script that calls a function in a module, and inside the module a global variable is defined. The function in the module tests the value of the global variable inside a try{} block. When the global is declared using "my", the variable is undefined inside the try{}. If I change the declaration to "our", or access the variable outside the try{} but inside in the normal scope of the function, then the variable is defined correctly. It seems like the initialization of the variable is optimized out, that the code in the try{} isn't analyzed when the function is initialized. I am trying to understand why this is the case, and whether this is expected behavior or not. Using Perl 5.8.3.
Thanks,
-Andy
Calling script:
#!/usr/bin/perl -w require "./global_stuff.pm"; global_stuff::print_global_variable();
Module: global_stuff.pm:
package global_stuff; use Error qw(:try); use strict; my $GLOBAL_VARIABLE = "IT'S WORKING FINE"; sub print_global_variable { #warn "global_variable = $GLOBAL_VARIABLE"; try { warn "global_variable = $GLOBAL_VARIABLE"; } catch Error with { }; } return 1;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: global variable initialization inside try{}
by ikegami (Patriarch) on Apr 09, 2009 at 15:39 UTC | |
Re: global variable initialization inside try{}
by perrin (Chancellor) on Apr 09, 2009 at 15:34 UTC | |
by targetsmart (Curate) on Apr 10, 2009 at 06:13 UTC | |
by perrin (Chancellor) on Apr 10, 2009 at 13:17 UTC | |
Re: global variable initialization inside try{}
by targetsmart (Curate) on Apr 09, 2009 at 14:50 UTC | |
Re: global variable initialization inside try{}
by JavaFan (Canon) on Apr 09, 2009 at 14:54 UTC | |
by almut (Canon) on Apr 09, 2009 at 15:08 UTC | |
by JavaFan (Canon) on Apr 09, 2009 at 16:30 UTC | |
Re: global variable initialization inside try{}
by mr_mischief (Monsignor) on Apr 09, 2009 at 15:58 UTC |