Harías:
sub wut {
my @args = @_;
...
}
Perl rellena automáticamente el @_
variable especial cuando se llama a una función. Se puede acceder a él de varias maneras:
- directamente, por el simple uso
@_
o elementos individuales dentro de ella como $_[0]
, $_[1]
, y así sucesivamente
- asignándole a otra matriz, como se muestra arriba
mediante la asignación a una lista de escalares (o, posiblemente, un hash, o otra matriz, o combinaciones de los mismos):
sub wut {
my ($arg1, $arg2, $arg3, @others) = @_;
...
}
Tenga en cuenta que en este formulario debe colocar la matriz @others
al final, ya que si la ingresó antes, absorberá todos los elementos de @_
. En otras palabras, esto no funcionará:
sub wut {
my ($arg1, @others, $arg2) = @_;
...
}
También puede utilizar shift
para tirar de los valores fuera de @_
:
sub wut {
my $arg1 = shift;
my $arg2 = shift;
my @others = @_;
...
}
Tenga en cuenta que shift
funcionará automáticamente en @_
si no se proporciona con una discusión
Editar: También puede usar argumentos con nombre usando una referencia hash o hash. Por ejemplo, si se llama a wut()
como:
wut($arg1, { option1 => 'hello', option2 => 'goodbye' });
... A continuación, podría hacer algo como:
sub wut {
my $arg1 = shift;
my $opts = shift;
my $option1 = $opts->{option1} || "default";
my $option2 = $opts->{option2} || "default2";
...
}
Esta sería una buena manera de introducir parámetros con nombre en sus funciones, por lo que se puede agregar parámetros más tarde y no tiene que preocuparse por el orden en que se pasan.
Si tiene * muchas, muchas * args, puede evitar copiarlas: 'sub wut {for my $ arg (@_) {blah blah blah}}'. Tenga cuidado con esto, sin embargo, porque cada elemento en '@ _' es un alias del argumento original y puede ** cambiar sus variables de llamada **. – daotoad
Puede aceptar una respuesta en 11 minutos – JOSHUA
También puede mencionar hacer parámetros nombrados a través de 'my% args = @_;' – friedo