Como en otros lenguajes, en Perl se pueden programar funciones recursivas, que se llaman a si mismas hasta que el problema que intentan resolver tiene un solución obvia. La recursión es un mecanismo de descomposición de problemas que puede hacer más sencillo llegar a una solución, pero a cambio, normalmente, su coste computacional es relativamente grande, ya que implica muchas llamadas a funciones seguidas.
De ejemplo os muestro la función factorial en forma recursiva:
sub factorial
{
# toma parámetro
my $fact = $_[0];
if($fact < 0) # error, la función factorial no está definida para negativos
{
return 0;
}
elsif($fact == 0) # caso trivial
{
return 1;
}
else # descompón el problema un paso más
{
return $fact * factorial($fact -1);
}
}