Creo que no, que no se puede. Ahora bien... si la función tiene un prototipo, entonces sí que se puede saber, llamando a
prototype(nombre-función). Más información en
perldoc -f prototypeHay algunos módulos que lo intentan "adivinar" mirando el código de la propia función, las primeras líneas, porque es ahí donde encontramos cosas como esta:
Using perl Syntax Highlighting
my($variable,$tipo) = @_;
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
y entonces deducen que son dos los argumentos, y que se llaman así. Pero hay que tener en cuenta otros casos:
Using perl Syntax Highlighting
my $variable = shift;
my $tipo = shift;
my $variable = $_[0];
my $tipo = $_[1];
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
y cosas peores.
A partir de v5.22 (experimental) y de v5.24 (oficial), las subrutinas
ya se pueden definir con una "firma":
sub funcion_cargar($variable, $tipo) { ... }
pero desconozco si, aún así, existe una forma de obtener los argumentos que no sea leyendo el código. Obviamente, ahora es más fácil saberlo, pero solo si el autor usar Perl >= v5.22.
En el Perl "bastardo", perl5i, sí que existe un método llamado
signature(), que es un objeto que almacena el número de argumentos, y si la función es un método o una función.