Um nochmal nachdrücklich auf die korrekte Antwort hinzuweisen: die Universalmethode
can soll verwendet werden. Sie liefert eine Codereferenz zurück, oder
undef im Fehlerfall.
sub subroutine {print @_;}
my $resultat = __PACKAGE__->can('subroutine');
$resultat->('Ich bin es!');
__PACKAGE__ beschreibt den aktuellen Namensraum. Man kann auch anderen Klassennamen oder Instanzvariablen einsetzen, um fremde Klassen zu inspizieren.
Bitte
can nie als
UNIVERSAL::can aufrufen, wie im verlinkten Thread empfohlen, sonst stirbt jedesmal ein Miezekätzchen.