¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Crea tus propias funciones

por Uriel Lizama

Introducción

Este tutorial es para todos aquellos primerizos en perl. En este tutorial vamos a hechar un vistazo rápido a las funciones, vamos a aprender para que sirver, como podemos usarlas optimamente, como podemos recibir variables, etc.

Contenido:

El contenido de este tutorial es:

  • 1.¿Qué son las funciones?
  • 2.¿Cómo usar funciones?
  • 3.Mandar información a mis funciones.
  • 4.Recibir información de mis funciones.
  • 5.Tips y notas finales

¿Qué son las funciones?

Creo que la manera mas rápida en la que podemos entender lo que son las funciones en perl es por medio de un ejemplo cotidiano.

Vemos nuestra mano, digamos que queremos hacer un programa que simule el funcionamiento de nuestra mano, por lo que primero tendríamos que comprender las funciones básicas de la misma.

En nuestra mano las funciones que podemos tomar podrían ser las de: señalar, agarrar objetos, golpear, aplaudir, tocar, etc.

Vemos como las funciones son eso, funcione que cierta cosa puede realizar, y lo mismo pasa con perl, pero en vez de que sea nuestra mano es algo para lo cual creamos funciones, ya sea un programa de estadísticas, uno de juegos, etc. Todos nuestros programas tienen funciones, estas son necesarias para que existan como programas en si, por lo menos debe de haber una función.

Creó que vimos suficiente de filosofía y podemos pasar a nuestro siguiente tema.

¿Cómo usar funciones?

Ya vimos lo que son las funciones, así que falta saber como podemos crear una nueva función. Tomando el ejemplo anterior, digamos que tenemos nuestro programa que se llama "mano.pl", entonces queremos hacer una nueva función para agarrar:

sub agarrar{
#mi codigo de la funcion
}

Umm, sencillo ¿no?. Lo que le dice a perl que algo es una función es el keyword o frase sub. Después del sub viene el nombre de nuestra función, y entre {} encerramos el código de nuestra función.

Al nombrar funciones hay ciertas reglas básicas:

  • - Sólo se pueden usar símbolos alfanúmericos y el _ para los nombres de las funciones.
  • - No se puede repetir el nombre de una función dentro de un programa.
  • - No se pueden nombrar funciones usando keywords o frases reservadas por perl, como podrían ser: print,crypt,printf,etc.

Fuera de esto, puedes nombrar tus funciones como se te pegue la gana.

Llamar una función

Podemos llamar a una función de diversas manera, usando el ejemplo de la función anterior, la podríamos llamar con cualquiera de las siguientes tres maneras:

&agarrar();
&agarrar;
agarrar();

Cualquiera de las tres es validas en perl, aunque te recomiendo que uses sólo una dentro de tu código.

Hagamos una prueba con la función que hicimos, vamos a ponerle que al ser llamada nos imprima en la pantalla que la función acaba de ser llamada:

&agarrar(); #Llamamos la funcion

sub agarrar{
print "Dentro de la función agarrar.\n";
}

Al correr el código se te debe de desplegar en la pantalla el mensaje dentro de la función. Y pues eso es todo, ya sabemos como crear una función y como llamarla.

Mandar información a mis funciones

Ya sabemos como crear y llamar funciones, pero digamos que queremos hacerle un cambio a nuestra función agarrar, para que al llamar la función le mandemos el objeto que queremos agarrar.
Para poder hacer esto primero debemos de mandar la información a la función. Esto lo hacemos poniendo entre los parentesis de la llamada de función, todos los elemento que queremos envíar separado por comas:

&mifuncion("elemento1","elemento2","elemento3");

Vemos como estamos enviando tres elemento al llamar la función, pero no solo lo podemos hacer de esta manera, también podemos mandar variables:

&mifuncion($var);
&mifuncion(@var);
&mifuncion(%var);

&mifuncion($var1,$var2,$var3);
&mifuncion(@var1,@var2,@var3);
&mifuncion(%var1,%var2,%var3);

&mifuncion($var,@var2,%var3);

Podemos envíar cualquier cantidad de elementos a nuestras funciones de esta manera.
Para poder recibir los elementos usamos una sintaxis especial, y como es típico de perl, también podemos hacer esto de dos maneras:

Por medio del shift, con la cual vamos recibiendo elemento por elemento, en el orden en el que son enviados:


$var_recibida = shift;

$var_recibida2 = shift;

$var_recibida3 = shift;

O tambíen lo podemos hacer por la variable especial @_:


($var_recibida,$var_recibida2,$var_recibida3) = @_;

Recuerda que puedesa hacer esto con cualquier tipo de variable recibida, pero ten cuidado en recordar el orden en el que envías las cosas.

Ya conociendo esto, ahora si podemos modificar nuestra función de agarrar para hacer lo que queremos:

&agarrar("Lampara"); #llamamos la funcion enviando un elemento

sub agarra{
my $objeto = shift;
print "Agarrando el objeto: $objeto\n";
}

Prueba el código y ve como funciona. También prueba modificando el código para recibir diferentes variables y de diferentes maneras.

Recibir información de mis variables

Ya sabemos como podemos envíar información de nuestras funciones, pero que tal si queremos recibir información de ellas. Usando el ejemplo de la mano, que tal si quisieramos crear una función "&golpear()" y quisieramos recibir la fuerza con la que se golpeo.

El recibir información de nuestras funciones no es tan diferente como lo hacemos el enviarla, lo único que cambia es que tenemos que asignar la función a una variable:


$resultado = &funcion_que_genera_resultado();

En este caso estamos suponiendo que la función va a regresar un string, pero también lo podríamos hacer con otro tipo de variable, o inclusive con diversas variables:


@resultado_array = &funcion_que_genera_array();

@resultado_hash = &funcion_que_genera_hash();

($res1,$res2,$res3) = &funcion_que_genera_variables();
($res1,@res) = &funcion_que_genera_variables();

Lo que debes de tener cuidado es en recibir las variables en el mismo orden que te las esta enviando la funcion.

Lo único que falta es ver como envíar una variable desde la función, y eso lo hacemos con return:


return($variable_de_regreso);

Como es lógico si quieres regresar varias variables o elementos lo haces separandolos por coma:

return($var1,$var2,@array);

Muy bien, ahora si podemos crear nuestra función golpear:

my $resultado_golpe = &golpear(10);

print "$resultado_golpe\n";

sub golpear{
my $intensidad = shift;

return("Se golpeo con una intesidad de $intesidad");
}


Tips y notas finales

Experimenta con las funciones, viendo que elementos puedes regresar, etc. Usa el método que mas te acomode pero recuerda usar ese método en todo tu código para que sea más claro.

Cuando crees tus funciones ten en mente que uno de los principales objetivos de estas es separar tu código, recuerda que el código dentro de una función nunca se ejecuta si no es llamado.

¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License