#!/usr/bin/perl 
use strict;      # Important pour les erreurs
use Carp;       # Important pour les erreurs
use warnings; # Important pour les erreurs

# Ce fichier permet de supprimer tous les fichiers auxiliaires (dont les extensions sont listées ci-dessous).
# il s'exécute en tapant : perl erase.pl depuis le terminal, une fois s'être placé dans le répertoire courant.

my @extension_fichiers = ("commande.txt","commandes.cxx","session.tex","fichier.tex","\.aux", "\.bak","\.log","\.out","\.gz","\.toc","\.gnuplot","\.table");  # tu mets les extensions de fichiers
my $repertoire = "src";  # tu mets ton répertoire
 
my @fichiers = lister_fichiers_recur($repertoire);
 
foreach my $file (@fichiers) 
{
  foreach my $extension (@extension_fichiers) 
  {
    if($file =~ m{$extension$}i) 
    {
      print "unlink : $file\n";
      unlink($file);
    }
  }
}

# On supprime aussi dans le répertoire courant

my $repertoire2 = ".";  # tu mets ton répertoire
 
my @fichiers2 = lister_fichiers_recur($repertoire2);
 
foreach my $file (@fichiers2) 
{
  foreach my $extension (@extension_fichiers) 
  {
    if($file =~ m{$extension$}i) 
    {
      print "unlink : $file\n";
      unlink($file);
    }
  }
}

 
sub lister_fichiers_recur {
  my ($repertoire) = @_;
  my @fichiers = ();
  opendir (my $rep_fh, $repertoire) 
    or die "impossible d'ouvrir le repertoire $repertoire\n";
  my @file_rep = grep { !/^\.\.?$/ } readdir($rep_fh);
  closedir ($rep_fh);
 
  foreach my $nom (@file_rep) {
    if ( -f "$repertoire/$nom") {
      push (@fichiers, "$repertoire/$nom");  
    }
    elsif ( -d "$repertoire/$nom") {
      push (@fichiers, lister_fichiers_recur("$repertoire/$nom"));
    }
  }
  return @fichiers;
}
