Hasta ahora, todos los “programas” capaces de escribir son bastante ‘lineales’, es decir que se ejecutarían de principio a fin, línea tras línea, sin ningún test o loop, todos en un bloque único.
Es posible de todos modos definir nuestras funciones (o procedimientos, o subroutines o como queráis llamarlas) en perl, y después llamarlas como se llaman las funciones normales del perl.

El modo de definir una función es éste:

sub nombre_de la_función {
contenidos;
de la;
función;
}

Dicha función será llamada como &nombre_de la_función si no se quieren añadir argumentos, &nombre_de la_función ($argumentos, @vanno, %qui) para llamarla con los argumentos.
La “&” es el carácter que identifica las subroutines, del mismo modo en que $ define los escalares.

Las subroutines se pueden definir en cualquier punto del programa, excepto en el interior de otras. [Esto sirve para el perl4, en el 5 puede haber subroutine en otras subroutines, sub (= subroutines) sin nombre, y no es necesario el “&” para llamarlas].

Las sub se pueden utilizar antes de ser definidas.

ex: #!/usr/bin/perl
$bla=3;
&showbla;
$bla=4;
sub showbla {
print “bla è $bla\n”;
}
&showbla

Este ejemplo asigna 3 a $bla, llama la sub, asigna 4 a $bla, después la llama; no importa el lugar en el que está definida.
En la práctica las sub se encuentran al principio del script, rodeadas con la inicialización de las variables que sirven, y después el resto del código. Pero el perl nunca obliga a ser lógicos o claros.

Dentro de una sub, podemos tener acceso a los parámetros pasados (si los hay) a través del especial array @_ . De este modo, el primer valor pasado a la sub será $_[0], el segundo $_[1], etc.

sub printfirstargument {
print $_[0], “\n”;
}

sub printnumberofarguments {
print $#_ +1, “\n”;
}

sub addone {
$_[0] = $[0] +1;
}
$bla = 3;
&addone($bla);

Además, cada función restituye un valor que es la última expresión que se había valorado. Desde una sub se puede regresar a un determinado punto con el comando “return”, que volverá al punto asignado como argumento.

sub one {

if ($_[0] == 1) {
controla que el primer argumento sea 1

return “one”;
si es así, restituye la cadena “one”

} else {
si no …

return “not one”;
restituye la cadena “not one”

}
cierra “if/else”

}
cierra la sub

print &one(1), “, “, &one(3), “\n”;
muestra “one, not one”

Veamos ahora un ejemplo más “a mano”: este script leerá los valores en input e imprimirá la media aritmética.

#!/usr/bin/perl
sub media {
local($n, $somma, $media);
foreach $n (@_) {
$somma += $n;
}
$media = $somma/($#_ +1);
return ($media);
}
escribe “Inserta los números:\n”;
@números = <STDIN>;
chop (@números);
$media = &media(@números);
escribe “Media = $media\n”;

Del “bloque” al Iphone, como han evolucionado los móviles El teléfono celular se ha convertido en un dispositivo indispensable en la vida de las personas. Los teléfonos móviles han evolucionado con el paso de...
Privacidad, la nueva batalla en Internet Envalentonados por su victoria contra la iniciativa en Estados Unidos para combatir la piratería en Internet, las compañías en línea de ese país se pr...
Android 4.1 Jelly Bean listo para descargar El inicio de la edición 2012 de Google I/O ha supuesto la llegada de varias novedades entre las que destaca el nuevo sistema operativo móvil de Google...
RapidShare dice que al regulación del ancho de bada es para repeler a los piratas Hace poco más de una semana comentábamos que en Rapidshare las descargas para los usuarios gratuitos estaban yendo harto más lentas, pasando Rapidshar...
Nuevo Firefox 26 Tras un desarrollo según los plazos previstos, el equipo de trabajo de la Fundación Mozilla acaba de lanzar el nuevo Firefox 26 para usuarios de Linux...
Script para validar una clave en PHP Voy a mostrar un script con el cual vamos a poder llamar una funcion que permite hacer las siguientes comprobaciones: Que la clave tiene al menos ...
Generando Tráfico Para que la propuesta de valor genere ventas, primero hay que presentarla. Para esto existen herramientas de generación de tráfico, pero no se deje ti...
iCloud: Apple en la nube iCloud el servicio de Apple con el que podremos almacenar en la nube todo tipo de documentos, música, fotos, aplicaciones y hasta una copia de segur...
La mayoría en EEUU usa celulares para acceder a Internet Según el Centro de Investigaciones Pew de Estados Unidos (Pew Research Center), 63% de los dueños de teléfonos celulares usa estos dispositivos para c...
Web Hosting Glossary,Terms Letter: D Terms Letter: D D Channel It is the data chanel of an ISDN connection. Its speed can be 16 or 64 Kbps Data transfer In context of we...