I'm slowly updating one of my larger CPAN modules and came across some code that hacks the symtab to create methods. It works great and is easy to read, but I'm curious if there's a way to do it without needing to utilize the no strict 'refs'.
The original code is designed so that several classes can access their own settings in a config file by using $obj->CONFIG_DIRECTIVE() without having to do $obj->{config}{directive}.
Here's a very basic example without the complexity of the class hierarchy, multi-level hash or config file.
#!/usr/bin/perl use warnings; use strict; my @constants = qw(ONE TWO); for my $member (@constants){ no strict 'refs'; my $thing; *{$member} = sub { $thing = shift if @_; return $thing; } } ONE("1: one\n"); TWO(2); print ONE(), TWO() ."\n";
At the time a few years ago, I must not have found a different way to do this which is why I implemented it in this manner, but am wondering what other Monks think.
Thanks,
-stevieb
In reply to Creating sub from string without munging the symbol table by stevieb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |