in reply to Re: namespace craziness
in thread namespace craziness
Great catch, chipmunk! I see that it is a compile-time issue in the assignment of a value to the constant. Yet, in which namespace is that assignment to $x happening? It's not in "package First" - the $x in the BEGIN block is a global (note no need for use vars: readers could try testing for defined $First::x in the ternary to see what I mean.
What fun! so, let's turn this into a compounded namespace+compile-time (follow the $x) problem, by re-writing the puzzle like this :
#!/usr/bin/perl -w # version chipmunk * .04 use strict; package First; use constant MULTIPLIER => 5*5; my $x = MULTIPLIER / 25; BEGIN {$x = MULTIPLIER}; package Second; use constant MULTIPLIER => defined $x ? First::MULTIPLIER : 2; print MULTIPLIER * $x, "\n"; # now what will it print? __END__
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: namespace craziness
by chipmunk (Parson) on Jan 30, 2001 at 22:15 UTC |