Thanks for the suggestions. My code is evolving somewhat differently than the suggested code (mostly to avoid the duplication implicit in both use const NAME and putting NAME in @EXPORT). I agree that it's unfortunate that the namespace is polluted via all the Exporter stuff, but hey, it works. (Note: ParentClass is defined in another file, I just didn't mention it before.)
package ParentClass; BEGIN { my %constants = ( FOO => 'foo', BAR => 'bar', BAZ => 'baz', ); foreach my $name ( keys %constants ) { no strict 'refs'; *{$name} = sub () { $constants{$name} }; } our @EXPORT = keys %constants; } # -------- new file -------- package ChildClass; use base 'ParentClass'; BEGIN { ParentClass->import(); } sub doStuff { my ($self, @otherArguments) = @_; print FOO; # Yay, it works this time! ... }
Edit: changed scalar constants to hash.
In reply to Re: Constants and Subclasses...
by t'mo
in thread Constants and Subclasses...
by t'mo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |