#valores iniciales del programa en C
$valorP=1280;
$valorI=10;
$valorD=0;
$estado=0;

#recorre el fichero de texto línea a línea
while ($_=<stdin>)
 {
 #elimina los carriage return y los line feed
 s/\n//g;
 s/\r//g;
 #si la línea actual contiene "Valor P="
 if (/Valor P\= /)
	{
	#elimina el texto y copia el número en la variable $valorP
	s/Valor P\= //;
	$valorP=$_;
	}
# elsif (/Parametro P cambio de/)
#	{
#	s/Parametro P cambio de \d+\/\d+ a valor (\d+)\/256/$1/;
#	$valorP=$_;
#	}
# elsif (/Parametro I cambio de/)
#	{
#	s/Parametro I cambio de \d+\/\d+ a valor (\d+)\/256/$1/;
#	$valorI=$_;
#	}
# elsif (/Parametro D cambio de/)
#	{
#	s/Parametro D cambio de \d+\/\d+ a valor (\d+)\/256/$1/;
#	$valorD=$_;
#	}
 #si la línea actual contiene "Valor I="
 elsif (/Valor I\= /)
	{
	#elimina el texto y copia el número en la variable $valorI
	s/Valor I\= //;
	$valorI=$_;
	}
 #si la línea actual contiene "Valor D="
 elsif (/Valor D\= /)
	{
	#elimina el texto y copia el número en la variable $valorD
	s/Valor D\= //;
	$valorD=$_;
	}
 #si la línea actual contiene "Estableciendo velocidad"
 elsif (/^(.)+Estableciendo velocidad/)
	{
	#elimina el texto y copia el número en la variable $valorVelocidad
	s/(.)+Estableciendo velocidad//;
	$valorVelocidad=$_;
	}
 #si la línea actual comienza por "Estableciendo velocidad"
 elsif (/^Estableciendo velocidad/)
	{
	#elimina el texto y copia el número en la variable $valorVelocidad
	s/Estableciendo velocidad//;
	$valorVelocidad=$_;
	}
 #si la línea actual comienza con la palabra "INICIO"
 elsif (/^INICIO/)
	{
	#crea un nuevo fichero de texto con los datos leídos anteriormente y cambia de estado
	$nombre=sprintf(">prueba_P%d_I%d_D%d_v%d.txt",$valorP,$valorI,$valorDinput,$valorVelocidad);
	open(FILE, $nombre) or die "Cannot open file $nombre";
	printf FILE "INIINI P=%d I=%d D=%d v=%d\n",$valorP,$valorI,$valorD,$valorVelocidad;
	$estado=1;
	}
 #si la línea actual comienza con la palabra "FIN"
 elsif (/^FIN/)
	{
	#cambia de estado
	$estado=2;
	}
	# si el estado es mayor que 4, imprime el final del fichero de texto
 elsif ($estado>4)
	{
	$estado=0;
	printf FILE "FINFIN\n";
	close FILE;
	}
	# si la nueva línea no concuerda con los patrones anteriores, cambia de estado
 elsif ($estado>1)
	{
	$estado++;
	}
 #si no estamos en el estado inicial, imprime la línea leída en el fichero de salida 
 if ($estado>0)
 {
 s/^[\s\t]+//g;
 printf FILE "%s\n",$_;
 }
 
 }