Forsaken has asked for the wisdom of the Perl Monks concerning the following question:
even though I cannot imagine this has never been asked before and I am almost sure it isn't possible what I am trying to do, I thought I might as well ask the question. If the answer's a no then at least I'll be able to sleep easy knowing that it wasn't my failing :-)
Imagine a situation where a scalar var, let's call it $coderef, gets assigned a reference to a named subroutine, which for the sake of tradition I shall call &foo. Is there any way whatsoever, at runtime, to get perl to cough up the name of the subroutine a coderef is pointing to? In other words, a way of making perl return the value &foo as the subroutine $coderef points to, as opposed to CODE(memory_address)? And, assuming this is even possible, what would be the result if the subroutine is anonymous?
A great many thanks in advance once again.
Update for clarity with a code example:
package thingy; use strict; use warnings; sub new { my($class, $name, $coderef, @args) = @_; #insert checking for proper values here, removed for readability's s +ake my $self = {}; bless($class, $self); $self->{'Coderef'} = $coderef; $self->{'Args'} = \@args; return $self; } sub execute { my $self = shift; $self->{'Coderef'}(@{$self->{'Args'}}); } sub details { my $self = shift; print "executes coderef *insert black magic here* with arguments " . + join(' ', @{$self->{'Args'}}) . "\n"; }
|
|---|