[Israel.pm] local not local?
Shmuel Fomberg
semuelf at 012.net.il
Thu Dec 7 19:36:56 EET 2006
Hello There.
I was extending Chart::Lines, and tried the following:
sub _draw_y_grid_lines
{
no strict;
local *Chart::Lines::_color_role_to_index = sub{return gdStyled};
$self->SUPER::_draw_y_grid_lines(@_);
}
The idea was that the _draw_y_grid_lines in the base class calls
_color_role_to_index to get the color. I wanted to temporarly override
it and force a value.
Well, it did. However, I expected that after the function's end, the
function will return to normal. It didn't. all the colors where a huge
mass. :-(
I made a sample program, and the problem didn't show. Any idea?
(I solved the problem by extending _color_role_to_index too, and made a
switch. But that's not evil. :-) )
Shmuel.
------ Start sample
sub one { return "one" }
sub two { return "two" }
sub answer {
print "The answer is: ", one(), "\n";
}
answer();
{
# local *one = \&two;
local *one = sub {return "three"};
answer();
}
answer();
------ End
More information about the Perl
mailing list