Next Previous Contents

6. Subrutinas

Para indicar una subrutina, lo que en otros lenguajes son funciones, o procedimientos, en Perl se usa la palabra sub:


sub mi_rutina
{
        # Cosas
}

Y la pregunta inevitable es: ¿y los parámetros? ¿No se le pueden dar parámetros a una subrutina? Pues sí, sí que se puede; pero no se indican en la declaración. Los parámetros que se le indiquen en la llamada a la función se almacenan en el array especial @_. Los argumentos que le pasemos a la función son los elementos de este array.

Un ejemplo:


# Llamamos a la subrutina:
funcion ($p1, $p2);

sub funcion
{
        my $primer_parametro = $_[0];
        my $segundo_parametro = $_[1];
        
        # Lo que sea que venga después
}

Los elementos del array @_ se acceden como los de otro array cualquiera: cambiando la arroba por un signo de dólar.

La palabra my que está antes de $primer_parametro y $segundo_parametro indica que estas variables son locales a la función. También vemos que no hace falta que la declaración de la subrutina esté antes de la llamada.

El hecho de que los parámetros de una función no sean una cosa estática, sino que pueden cambiar de una llamada a otra, abre nuevas posibilidades parecidas a las que hay en otros lenguajes como C++ o Java, capaces de "sobrecargar" funciones:


sub funcion_sobrecargada
{
        if ($_[0]) {
                # Actuar como función de al menos un parámetro
        }
        
        if ($_[1]) {
                # Actuar como función de al menos dos parámetros
        }

        if ($_[2]) {
                # Actuar como función de al menos tres parámetros
        }

        # Etc etc etc
}


Next Previous Contents