#!/usr/bin/perl -w

use strict;
use warnings;

my $fasta_file = "/home/u93280/Escriptori/prots/ALL_selenoproteins.fasta";	# fitxer amb totes les proteïnes
my $file_name;								# només declaro el nom dels fitxers com a string variable


open(FASTA, $fasta_file) || die("can't open $fasta_file");		# obro el fitxer i li assigno el filehandle amb nom FASTA	

while(<FASTA>) {							# llegeixo el fitxer línia per línia

	if(/^>/) {							# si la línia te el caracter ">"



			# determino el nom de cada fitxer
			# cada línia es pot llegir com a "$_"			

			my @linia_split = split(" ",$_);		#trenco cada línia pels espais en blanc. Recordem que estem en una linia que comença per ">" 
									#>SPP00000632_2.0 # Protein # 15 kDa selenoprotein (Sel15) # Zebrafish (Danio rerio)
									#Dividirà la línia en tots els espais així: >SPP00000632_2.0, #, Protein, #, ...
									#linia_split és un vector per això té el símbol "@" a davant, enlloc de "$" d'un string (o cadena), ja que té tots els elements que dèiem abans.
									

										#Ara es tracta d'agafar el primer element que és el que te el ID que volem
			$file_name = substr($linia_split[0],1).".fasta";	# @linia_split[0] seleccionem el primer element de l'array ">SPP00000632_2.0"					
 										# Però nosaltres només volem el nom sense el símbol ">", per això fe servir la funció "substr".
										# La funció substr() té com a arguments el string i un offset. L'string és ">SPP00000632_2.0" i l'offset el fixem a 1 perquè
										# així ens retorna des del segon element fins a l'últim de l'offset: "SPP00000632_2.0". 
										
										# Finalment, concatenanem amb el punt, el que surt de substr() i l'extensió ".fasta". Ja tenim el ID per guardar cada fitxer.

						
			close(OUTPUT);					
			open(OUTPUT, ">", $file_name);			# obrir de nou l'OUTPUT, nombrar el document amb el ID que volem (i que ja tenim guardat)
		} 

	
	print OUTPUT $_;						# escriure la línia al document (això ho farem fins que torni a entrar dins del "if")
}

close(OUTPUT);								#tancar l'OUTPUT de l'últim fitxer un cop no hi hagi més línies (si no es fa res, però així és més elegant).


