next up previous index
Siguiente: Subrutinas que devuelven valores Subir: Declaración de subrutinas y alcance de Anterior: Declaración de subrutinas y alcance de   Índice de Materias

Ejemplo de alcance de variables

A parte de @_ , las subrutinas pueden acceder a otras variables globales. Para probar esto os pido que ejecutéis este programita, observéis la salida y luego lo modifiquéis para demostrar que la subrutina puede hacer exactamente los mismos cálculos recibiendo como parámetros los datos necesarios. ¿No os parece que se hace más fácil comprender el funcionamiento de printBLAST en la versión modificada, ya que no hay que buscar en el código de donde vienen las variables utilizadas?

#!/usr/bin/perl -w 
# Ejemplo escrito por Bruno Contreras en Julio de 2005

use strict; 

my ($evalue,$identities,$queryseq,$subjectseq);

# 100 líneas de código
$evalue = 4e-34;
$identities = 87;
$queryseq = "MARRKRRNFNKQATEILNEYFYSHLSNPYPSXXXXXXXXXXSGITVSQVSNWFGNKRIRYKKNIGKFQEEANIYAAKTAVTA";
$subjectseq = "MARRKRRNFNKQATEILNEYFYSHLSNPYPSEEAKEELAKKSGITVSQVSNWFGNKRIRYKKNIGKFQEEANIYAAKTAVTA";

# programa principal
my @blastdata = ($evalue,$identities,$queryseq,$subjectseq);

# 100 líneas de código

printBLAST();

# 500 líneas de código

######## declaraciones de subrutinas ######################################

sub printBLAST     
{
	print "evalue $blastdata[0]\n";
	print "alignment:\n$blastdata[2]\n$blastdata[3]\n";                      
}


next up previous index
Siguiente: Subrutinas que devuelven valores Subir: Declaración de subrutinas y alcance de Anterior: Declaración de subrutinas y alcance de   Índice de Materias
Bruno Contreras Moreira 2007-06-15