#!/usr/bin/perl -W

use strict;

my $imposicion = 500;               # euros
my $periodo = 4;                  # trimestral
my $interes_anual = 0.02187;        # orientativo inicial, puede ser 0
my $interes_p = $interes_anual / $periodo;
my $N = 5*$periodo+1+0;           # datos actuales: aÃ±os completos + pago Nov. 2008 + 3 en 2013
# $objetivo = 8882.02;             # saldo real actual
# $objetivo = 9968;   # 3/6/13
my $objetivo = 11016.46;  # 10/01/14
my $fin = 2008+6;                   # horizonte temporal

my $ok=0;
my $saldo=0;
my ($mes, $anno, $i, $nominal);
print "InterÃ©s del perÃ­odo:\n";
	      
while ($ok==0){
    if ($saldo>$objetivo) {
	$interes_p -= rand()/10000000;
    }elsif ($saldo<$objetivo) {
	$interes_p += rand()/10000000;
    }else{
	print "(exact)\n";
    }
    print "\r$interes_p";
		  
inicio:    
      $mes = 11;                       # inicio
    $anno = 2008;
    $saldo= $i = $nominal = 0;

    print "\nN\t Tiempo  \t Nominal -> SALDO\n" if $ok==1;
    while (1){
	$i++;
	$nominal += $imposicion;
	$saldo += $imposicion + $interes_p * $saldo;
	print "$i\t 1/$mes/$anno\t $nominal\t -> $saldo\n" if $ok>=1;
	if ($i == $N) { 
	    last if ($saldo<$objetivo-.0000001 || $saldo>$objetivo+.0000001);
	    if ($ok==1){
		print "Nominales depositados: $nominal\n";
		print "-" x 52, "\n" ;
	    }
	    $ok++;
	    goto inicio if $ok==1;
	}
	$mes += 3;                      # trimestral
	if ($mes > 12) { $mes -=12; $anno++; }
	last if ($anno > $fin);
    }
}
print "InterÃ©s nominal anual = ";
printf "%.9f\n" , $interes_p*$periodo;
print "TAE correspondiente = ";
printf "%.9f\n\n" , ((1+$interes_p)**$periodo)-1;


__END__

Este es un ejemplo de cómo calcular el interés nominal implícito
  de un fondo de ahorro. Los datos están tomados de un caso real

