#!/usr/bin/perl -w

#Einlesen der überebenen Datei und prüfe ob vorhanden
if(-r $ARGV[0]){
	#system "rm -R aln_output/";
		
	open(MAFFile,$ARGV[0]);
	print $ARGV[0]."\n";
	#Fortlaufender Counter für Dateibenennung
	$count=0;
	#Kontrollcounter ob neuer Block angefangen oder alter weiterbearbeitet
	$in=0;
	#Variable die letzten Score speichert
	$lastScore=0;
	#Array für die Align Gene
	#Solange Datei nich am Ende lese Zeilenweise aus
	mkdir("aln_output",0777);
	while(defined($i=<MAFFile>)){
		# schneide \n ab
		chop($i);
			
		#Wenn Zeile mit 'a score=' gefolgt von beliebig vielen Zahlen
		#und score ist nicht 0
		
		if($i =~/a score=\d*/ && !($i=~/a score=-{1}/) && !($i=~/a score=0\.0/)){
			$zeilenCount=0;
			#Flag für gefundenn Score
			$in=1;
			#erhöhe Counter
			$count++;
			##Test gib aktuelle Zeile aus	

			#Suche nach Zahl mit [-]'optionales minus' gefolgt von min. 1 Ziffer
			$i=~/-?\d{1,}/;

			#Hilfe für das finden der Richtigen Datei um schreiben
			$lastScore=$&;

			#Erstelle Datei 
						

			close(NEWaln);
		}else{
			#Wenn nicht neuanfang und String mit s beginnt
			if($i=~/s / && $in==1){# && (length($i=~/[CTGAU-]/>20))){
				$zeilenCount++;		
				$i=~/[a-zA-Z]{2}_[a-zA-Z]{2}/;
				$name=$&;
				#finde alignment
				$i=~/[CTGAU-]{3,}/;
				#Name,Alignment in assoziativem Array speichern
				$aligns{$name}=$&;

				##Test gib Alignment aus
				##print "ALIGNMENT".$&."\n";
				
				}#if
			else{
				$line = "";
					$killME=0;
					$zeilenCount=0;
					foreach $key (keys(%aligns)){
					
						open(NEWaln,">>./aln_output/sp".$count."_".$lastScore.".aln");#falls array nicht leer 
						if(defined($key)){
							$line=$aligns{$key};
							if(length($line)>20){
							$zeilenCount++;
							print NEWaln "\n>".$key."\n";
							while(length($line)!=0){
								if (length($line)<60){$max = length($line);}else{$max=60;};
								$line=substr($line,0 , $max);
								if (length($line)==0){$min = 0;}else{$min = length($line);};
								$aligns{$key}=substr($aligns{$key},$min,length($aligns{$key}));
								$line=~s/-//g;
								print NEWaln $line."\n";
								$line=$aligns{$key};
							}	}else{
									$killME=1;
								}
					
						}#if(defined)
					}#forEach
			close(NEWaln);
			
			#if($zeilenCount<3){print $count."\n"};
			if(($killME==1) or ($zeilenCount==2)){
				if($count==$killed){}else{	
				system "rm aln_output/sp".$count."_".$lastScore.".aln > ./log";
				$killed=$count;
				}
				
							}
			%aligns=();
			$in=0;
			}#else
		}#if		
	}#else
	close(MAFFile);

}
else{
	#Datei nicht vorhanden
	print "Datei nicht gefunden.";
}#else

