Facebook Twitter Google Digg Reddit Email Imprimir
Martes 16 de octubre de 2018
Santoral:
Eduvigis
Otros:
Día Mundial de la Alimentación
Día del Profesor
Semana:
42
Día año:
289/365 (79%)
U.F.:
27389.73
IPC:
0,3
Dolar:
683,7
Euro:
791,5
Bitcoin:
U$ 6447.3769322344
mindicador.cl
Time4VPS.EU - VPS hosting in Europe

Bloques especiales BEGIN y END

Una forma simple de preparar y dar un término limpio a nuestro programa

Introducción

En muchas ocaciones debemos procurar ejecutar ciertas tareas antes de ejecutar nuestro código PERL, como incluir ciertos directorios para librerías, o a su término, como cerrar conexiones y/o archivos abiertos.

Descripción

Nuestro interprete PERL provee de dos bloques que se ejecutan inmediatamente antes de ejecutar e inmediatamente despues:

BEGIN { }
Se ejecuta apenas es completada su compilación, y antes de completar la compilación del script PERL en su totalidad. Puede ser especificado múltiples veces, donde se ejeutarán en el orden en que aparecen.
END { }
Se ejecuta inmediatamente antes de dar término al script, puede ser especificado múltiples veces, en cuyo caso son ejecutados en el órden inverso al que son declarados. El valor dado por exit() puede ser obtenido y modificado por medio de la variable $?.

Los bloques pueden se declarados opcionalmente como subrutina, de la forma sub END {...}

Ejemplos de Uso

Incluir Librerias

Dado que el bloque BEGIN se ejecuta antes de la complilación del resto del código, podemos incluir directorios para la búsqueda de librerías requeridas por use

#!/usr/bin/perl

BEGIN { push @INC, '../lib'; }

use Mylib ;

...

Limpiar al salir

Con END nos podemos asegurar de cerrar de forma limpia las conexiones y limpiar archivos de lock:

#!/usr/bin/perl

...

END { 
   print STRDERR "Salida con codigo de retorno $?\n" ;
   $remoteSession->logout() if defined($remoteSession) ;
   unlink $pidfile if ( defined($pidfile) ) ;
 }

Escrito por: Luis Hernán de la Barra, 18/06/2015

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
E-Mail:ldelabar@wyzer.cl
Web:www.wyzer.cl