#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use open qw/:std :utf8/;

use Encode;
use Getopt::Long;

my ($programme) = $0 =~ m|^(?:.*/)?(.+)|;
$programme = decode_utf8($programme);

my $dir      = "";	# par exemple "ArthropodesTest"
my $racine   = "";	# par exemple "Arthropodes"
my $metadata = "";	# par exemple "metadata.csv"
my $sortie   = "";	# par exemple "Arthropodes_Ira.txt"

eval	{
	$SIG{__WARN__} = sub {usage(1);};
		GetOptions(
		"dir=s"      => \$dir,
		"racine=s"   => \$racine,
		"metadata=s" => \$metadata,
		"sortie=s"   => \$sortie,
		);
	};
$SIG{__WARN__} = sub {warn $_[0];};

usage(2) if not $dir or not $racine or not $metadata or not $sortie;

#ouverture du dossier contenant les fichier .txt

opendir(my $dh, $dir) or die "Couldn't open file $dir, $!";
my @files = sort grep { /^${racine}_\d+.txt$/ and -f "$dir/$_" } readdir($dh);
closedir($dh);
my $size = @files;
print STDERR "Total : $size\n";

#ouverture des métadonnées
open(METADATA, "<:utf8", $metadata) or die "Couldn't open file $metadata, $!"; 

#ouverture d'un fichier pour saisir des données
open(DATA, ">:utf8", $sortie) or die "Couldn't open file $sortie, $!"; 

#une boucle pour métadonnées, une autre pour les fichiers .txt dans le dossier ArthropodesTest
my $i = 0;
while (my $metadata = <METADATA>) {
	$metadata =~ s/"(.*?)","(.*?)","(.*?)","(.*?)"/\*\*\*\* \*s_$2 \*c_$3 \*annee_$4/;
	print DATA "$metadata";
	open(FILE, "<:utf8", "$dir/$files[$i]") or die "Couldn't open file $files[$i], $!";
	while(my $ligne = <FILE>){
		#suppression des étoiles et des chiffres
		$ligne =~ s/\*//;
		$ligne =~ s/\d//g;
		print DATA $ligne;
	}
	close(FILE);
	$i++;
}

close(METADATA);
close(DATA);

exit 0;


sub usage
{
my $code = shift;

print STDERR "Usage : $programme -d répertoire -r racine -m métadonnées -s sortie\n\n";
print STDERR "Exemple : \n";
print STDERR "        $programme -d ArthropodesTest -r Arthropodes -m metadata.csv -s Arthropodes_Ira.txt\n";

exit $code;
}
