Em PERL, é possível encapsular e modularizar funcionalidades através da construção de subrotinas e módulos.
Uma subrotina é o equivalente a uma função em C. Declara-se usando a instrução sub seguida do nome da rotina, dos parâmetros de entrada (opcional) e do respectivo bloco de código. Por exemplo, a rotina seguinte :
sub quad {
$oper = @_;
$oper * $oper;
}
A rotina acima calcula o quadrado do valor que lhe foi passado como primeiro parâmetro na invocação. Quaisquer parametros em excesso na invocação não são aproveitados na implementação e quaisquer parãmetros em falta farão com que as variáveis locais fiquem vazias (0 ou "").
Uma rotina devolve o valor da ultima operação que for executada. Caso se queira devolver sempre o mesmo valor, deve-se escrever esse valor como última instrução da subrotina:
1;
É possível, no entanto, invocar a função return para sair da subrotina podendo a palavra return seguir-se do valor devolvido pela subrotina.
Um módulo é um ficheiro com extensão .pm que contém um conjunto de subrotinas. Deve ser iniciado com a instrução package. Em seguida, incluem-se um conjunto de subrotinas e termina-se com a directiva 1;
Um módulo que contivesse a subrotina que aparece acima seria:
package aritmetica;
sub minha_rotina ($){
$oper = @_;
$oper * $oper;
}
1;
A inclusão de um módulo num script faz-se com a instrução use, como em:
use aritmética; #ATENCAO: não se escreve a extensão .pm
A invocação de subrotinas de um módulo faz-se escrevendo <nome do módulo>::<nome da subrotina>(parametros).
No caso que temos vindo a seguir nesta página, teriamos:
$resultado = aritmetica::quad(50); #atribuicao de 2500 a $resultado
Comentários à página devem ser enviados para João Garcia, preferencialmente com o tema: manual_perl.