lunes, 9 de septiembre de 2013

Funciones Perl


Las funciones son partes de código reservadas para realizar una tarea en concreto, es decir, un función es un nombre con una serie de instrucciones que posteriormente pueden ser llamadas en una o varias partes del script, las funciones permiten simplificar, ordenar y contraer el número de líneas de código necesarias para determinadas acciones que pueden ser repetitivas.

Para construir funciones en Perl se utiliza la palabra reservada sub seguido del nombre de la función, ejemplo -> sub mi_funcion{#instrucciones};, en Perl los parámetros se declaran dentro de las llaves de la función, ejemplo -> local($parametro1, $parametro2) = @_;, @_ recibe los argumentos que posteriormente podrán ser utilizados al llamar la función -> mi_funcion("hola", "mundo");, en las funciones es de uso común la palabra reservada return;, esto retorna el valor de la acción realizada dentro de la función.

Ejemplo de función simple ...


#funcion simple
sub texto
{
return "Hola Mundo \n";
}
print texto();


Ejemplo de función con parámetro ...

#funcion con parametro
sub con_parametro
{
local($cadena) = @_;
return $cadena;
}
print con_parametro("Hola Mundo \n");


Ejemplo de función con parámetro opcional ...

#funcion con parametro opcional
sub con_parametro_opcional
{
local($cadena, $opcional) = @_;
if (!defined($opcional))
{
$opcional = "predeterminado \n";
}
return $cadena . " " . $opcional;
}
print con_parametro_opcional("Hola");
print con_parametro_opcional("Hola", "Mundo");


Ejemplo de función con opciones ...

#funcion con opciones
sub con_opciones
{
    $imprime = "";
    %args=@_;
    %defaults=("color" => "rojo", "altura" => 100);
    foreach (keys %defaults) {
        defined ($args{$_})  || {$args{$_}= $defaults{$_}} ;
        $imprime .= "\n".$_ ." - ".$args{$_};
    }
 return $imprime;
}
print con_opciones("color" => "verde");


Como se puede observar en los ejemplo, las funciones abren un abanico amplio de posibilidades y creo que cada uno de los ejemplos son una buena base para crear funciones más complejas.