Perl Language Creando subrutinas


Ejemplo

Las subrutinas se crean utilizando la palabra clave sub seguido de un identificador y un bloque de código entre llaves.

Puede acceder a los argumentos utilizando la variable especial @_ , que contiene todos los argumentos como una matriz.

sub function_name {
    my ($arg1, $arg2, @more_args) = @_;
    # ...
}

Como la función shift predeterminada a desplazar @_ cuando se usa dentro de una subrutina, es un patrón común extraer los argumentos de forma secuencial en variables locales al comienzo de una subrutina:

sub function_name {
    my $arg1 = shift;
    my $arg2 = shift;
    my @more_args = @_;
    # ...
}

# emulate named parameters (instead of positional)
sub function_name {
    my %args = (arg1 => 'default', @_);
    my $arg1 = delete $args{arg1};
    my $arg2 = delete $args{arg2};
    # ...
}

sub {
    my $arg1 = shift;
    # ...
}->($arg);
5.20.0

Alternativamente, la característica experimental "signatures" puede usarse para desempaquetar parámetros, que se pasan por valor ( no por referencia).

use feature "signatures";

sub function_name($arg1, $arg2, @more_args) {
    # ...
}

Los valores por defecto se pueden utilizar para los parámetros.

use feature "signatures";

sub function_name($arg1=1, $arg2=2) {
    # ...
}

Puede usar cualquier expresión para asignar un valor predeterminado a un parámetro, incluidos otros parámetros.

sub function_name($arg1=1, $arg2=$arg1+1) {
    # ...
}

Tenga en cuenta que no puede hacer referencia a los parámetros que se definen después del parámetro actual; por lo tanto, el siguiente código no funciona como se esperaba.

sub function_name($arg1=$arg2, $arg2=1) {
    print $arg1;  # => <nothing>
    print $arg2;  # => 1
}