#!/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; }