#!usr/bin/perl -w
use strict;

my $infile = $ARGV[0];
unless (defined($infile))
{
	  print "Please give me a file to process ... \n";
	  exit;
}

sub formatf($)
{
	  my $infilename = shift;
    if (-d "$infilename")
    {
    	 
    	opendir ( DIR, $infilename ) || die "Error in opening dir $infilename\n";
    	`mkdir ${infilename}_new`;
    	while( (my $filename = readdir(DIR)))
    	{
    		  next if ($filename eq '.' or $filename eq '..') ;
    	    open my $in, "<$infilename/$filename" or die "Can not open $filename: $!";
    	    $filename = (split (/\./, $filename))[0];
    	    open my $out, ">${infilename}_new/${filename}_new.fa" or die "Cannot open file ${filename}_new.fa: $!";
         
          my $flag = 0;
          while (my $line = <$in>)
          {
          	  $flag++;
          	  if ($flag == 1)
          	  {
          	  	  print $out $line;
          	  	  next;
          	  }
          	  if ($line =~ m/^>/ )
          	  {
          	  	  print $out "\n".$line;
          	  }
          	  else
          	  {
                      $line =~ s/\n//;
          	  	  $line =~ s/\r//;
          	  	  print $out $line;  
          	  	  
          	  }
          	  
          }
          print "$flag lines in the file: $filename\n";
          close ($in);
          close ($out);
    	    
    	}
    	print "See directory ${infilename}_new for result files\n";
    }
    else
    {
    	  
    	  my @array = split ("/", $infilename); 
    	  my @name = split (/\./, $array[-1]);  
    	  open my $in, "<$infilename" or die "Cannot open file $infilename: $!";
        open my $out, ">$name[0]_new.fa" or die "Cannot open file $name[0]_new.fa: $!";
        my $flag = 0;
        while (my $line = <$in>)
        {
        	  $flag++;
        	  if ($flag == 1)
        	  {
        	  	  print $out $line;
        	  	  next;
        	  }
        	  if ($line =~ m/^>/ )
        	  {
        	  	  print $out "\n".$line;
        	  }
        	  else
        	  {
                      $line =~ s/\n//;
        	  	  $line =~ s/\r//;
        	  	  print $out $line;  
        	  	  
        	  }
        	  
        }
        print "$flag lines in the file: $infilename\nSee $name[0]_new.fa for result\n";
        close ($in);
        close ($out);
     }
    
}



#main
print "Please input the data type (\"g\" for genome sequence and \"c\" for cDNA sequence): \n";
my $type = <STDIN>;
chomp ($type);
print "\nFiles are in processing ...\n";

formatf($infile) if ($type eq "c");
if ($type eq "g")
{
	  if (-d "$infile")
	  {
	  	  opendir ( DIR, $infile ) || die "Error in opening dir $infile\n";
    	
      	while( (my $filename = readdir(DIR)))
      	{
    		    next if ($filename eq '.' or $filename eq '..') ;
    	      open my $in, "<$infile/$filename" or die "Can not open $filename: $!";
    	      my $flag = 0;
    	      while (my $line = <$in>)
	          {
	      	       $flag++ if ($line =~ m/^>/ );
                 if ($flag == 2)
                 {
           	           print "SORRY: Only one sequence is allowed in the genome reference file\n";
                  	   exit;
                 }
	          }
    	  }
	  }
	  else
	  {
	      open my $in, "<$infile" or die "Cannot open file $infile: $!";
	      my $flag = 0;
	      while (my $line = <$in>)
	      {
	      	 $flag++ if ($line =~ m/^>/ );
           if ($flag == 2)
           {
           	   print "SORRY: Only one sequence is allowed in the genome reference file\n";
           	   exit;
           }
	      }
	  }
	  
	  formatf($infile);
}


