in reply to Re: Dynamic functions
in thread Dynamic functions
#!/usr/bin/perl -- use strict; use warnings; Main(@ARGV); exit(0); sub Main { my $package = __PACKAGE__; my $stash = do { no strict 'refs'; \%{ $package . '::' } }; print "$package\n$stash\n"; for my $symbol ( keys %$stash ) { next unless $symbol =~ /^func_/; print "\t$symbol\n"; #~ my $coderef = $package->can( $symbol ); # method/@ISA #~ my $coderef = *{ $stash->{$symbol} }{CODE}; my $coderef = \&{ $stash->{$symbol} }; print "\t$coderef\n\t\t", $coderef->(), "\n"; } ## end for my $symbol ( keys %$stash) } ## end sub Main sub func_a_1 { "A 1" } sub func_a_2 { "A 2" } sub func_b_1 { "B 1" } sub func_b_2 { "B 2" } __END__ main HASH(0x3f8b4c) func_a_1 CODE(0x9ad2c4) A 1 func_b_2 CODE(0x9d89fc) B 2 func_a_2 CODE(0x9ad474) A 2 func_b_1 CODE(0x9d898c) B 1
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Dynamic functions ( enumerate namespaces stash subs constants packages classes )
by Anonymous Monk on Mar 13, 2013 at 22:51 UTC |