Sie scheinen nach Introspektion fragen. Es gibt viele OO-Frameworks, die es bereitstellen (z. B. Moose). Aber, wenn Sie in der Lage sein möchten, eine Funktion zu deklarieren und dann aus Ihrem Programm zu untersuchen, Function::Parameters ist ein vernünftiger Weg zu gehen.
Vom Function::Parameters::Info Synopsis:
use Function::Parameters;
fun foo($x, $y, :$hello, :$world = undef) {}
my $info = Function::Parameters::info \&foo;
my $p0 = $info->invocant; # undef
my @p1 = $info->positional_required; # ('$x', '$y')
my @p2 = $info->positional_optional; #()
my @p3 = $info->named_required; # ('$hello')
my @p4 = $info->named_optional; # ('$world')
my $p5 = $info->slurpy; # undef
my $min = $info->args_min; # 4
my $max = $info->args_max; # inf
my $invocant = Function::Parameters::info(method() { 42 })->invocant; # '$self'
my $slurpy = Function::Parameters::info(fun {})->slurpy; # '@_'
Die Innerlichkeit Funktion im :: Info-Modul ist eigentlich mit Moosen umgesetzt.
Ich denke, es war der seltsame Wortlaut Ihres ersten Satzes, der die Leute irreführte. Erst als Sie meine Antwort kommentiert haben, haben wir festgestellt, dass Sie tatsächlich eine Möglichkeit haben wollen, den Prototyp eines Unterprogramms zu bestimmen. Es ist eine seltsame Sache zu tun, wenn Sie eine IDE oder etwas ähnliches schreiben. Würden Sie Ihre Gründe dafür erklären, da es möglicherweise eine viel bessere Lösung gibt. Standard Perl 5 hat überhaupt keine Prototypen, also gibt es nichts zu holen. Es kann gut sein, dass Sie eine andere Sprache verwenden. – Borodin
Danke, das ist gutes Feedback und ich entschuldige mich für schlecht formulierte Frage. Mein Anwendungsfall ist die dynamische Anzeige erforderlicher benannter Parameter auf einer Webseite, nachdem eine Funktion ausgewählt wurde. Die akzeptierte Antwort von Function :: Parameters ist genau das, wonach ich gesucht habe. – nando