5 - Subrutinas

[editar]
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=442
27 de Octubre de 2005
Otro aspecto de interés en PERL es la definición y manejo de subrutinas.

El formato de declaración de una subrutina es:

 sub NOMBRE BLOQUE

Ejemplo :

 sub HOLA
 {
   print  "HOLA\n";
 }

La llamada a la subrutina la haríamos usando:


  • do nombre_de_la_subrutina();
  • &nombre_de_la_subrutina;
Las dos formas producen el mismo resultado con la excepción de que en el caso de do hay siempre que poner los paréntesis, si queremos pasar argumentos debemos pasar los argumentos entre estos paréntesis, y estos serán almacenados en el array de escalares @_, es decir para saber el número y el valor de los argumentos pasados a una subrutina hay que leer de este array predefinido.
Un ejemplo podría ser el siguiente:
  sub imprime
  {
    local ($cadena)=@_;
    print $cadena;
  }

  &imprime ("HOLA\n");En el ejemplo anterior se usa la función local(), que sirve para declarar variables locales a la subrutina, por supuesto podríamos haber referenciado directamente el array @_.
El valor retornado por la subrutina es el de la última expresión evaluada, y puede ser tanto un array como un escalar. También podemos devolver explicitamente un valor usando return, como en C.
También resulta interesante la declaración y uso de formatos o reports. Con la definición de un report, estamos alterando el formato de salida de los registros cuando utilizamos la función write.
La sintaxis para la definición de un formato es:
       format NOMBRE =
       FORMLIST
       .Si NOMBRE se omite, entonces STDOUT es tomado como el dispositivo de salida. FORMLIST contiene el formato de la salida de la forma:
SANGRADO_CAMPO1,SANGRADO_CAMPO2,...,SANGRADO_CAMPON variable1, variable2,.........,variablen
El tipo de sangrado se consigue usando los símbolos:
    • < : sangrado a la izquierda.
    • > : sangrado a la derecha.
    • | : texto centrado. Pondremos tantos símbolos como la longitud máxima requerida para representar el valor de la variable asignada a ese campo, además al principio de la definición de los campos de sangrado debe estar el símbolo @.
Un ejemplo de salida formateada podría ser:

format STDOUT_TOP = 
                        SALIDA FORMATEADA DE WHO
.
format STDOUT =
Usuario                      Conectado en               Momento de la conexion

@<<<<<<<<<<<<<<<<<<<<<<<<<@|||||||||||||||||||||||@>>>>>>>>>>>>>>>>>>>>>>>>>
$usuario                  ,$tty                    ,$conectado

.
open(WHO,"who|");  
while ($who = <WHO>)
{
    chop $who;
    ($usuario,$tty,$conectado) = split(/\s+/,$who,3);
    write;
}
close(WHO);
[editar]

Sé el primero en opinar


Tutoriales relacionados con 'Introducción al Lenguaje PERL'

PERL es un lenguaje interpretado que tiene varias utilidades, pero está principalmente orientado a la... Más »
El principal objetivo es introducir y discutir el modo principal[2] PSGML de Emacs y las... Más »
Debian es el nombre de una organización dedicada al desarrollo y mantenimiento de sistemas operativos... Más »
Hay muchos libros de Matlab, algunos muy buenos, pero en ninguno es tratado como un... Más »
Las páginas que estás viendo están alojadas en mi propio servidor (IP 217. 126.10.173), que... Más »

Autor y licencia de 'Introducción al Lenguaje PERL'


Tutorial de Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=442 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.