#!/usr/bin/perl -w
# remd: changer les extentions aux fichiers voulus.vers for System Unix/like par  
# alain Adelmar| aadelmar@free.fr | Ven 09/03/2001  18:25:00 | Pessac Verthamon.
LABEL;
$i=0;
$pathroot;
$x = 'x=' x 30;        # pour faire joli
print "Bonjour, dans quel dossier voulez vous faire des modifications\n";
chomp($resp_dir = <STDIN>);

while (! -e "$resp_dir") {
  print "affiner votre séléction, ce repertoire n'existe pas\n";
  @rootdir = split(/\//, $resp_dir);
  for ($rootdir[0] .. $#rootdir) {    
    $pathroot = "$pathroot" . "$rootdir[$i]\/";
    print "$i $pathroot\n";
    if ($pathroot == undef) {
      $pathroot = $rootdir[$i-1];
      print "Vous etes bon jusqu'a $pathroot\n";
      last LABEL;
    }
    $i++;
  }
  $pathroot = "\/" . "$pathroot";
  print "pathroot = $pathroot\n";
  
  open DIR, "$pathroot" or die "Ouverture du repertoire $resp_dir impossible $!";
  @lsdir = readdir(DIR);
  print "Vous étes actuellement dans $pathroot\n";
  foreach $f(@lsdir) {
    if (-d $f) {
      print "$f est un repertoire\n";
    }
    else {
      print "$f est un fichier\n";
    }
  }
  close DIR or die "Fermeture impossible $!";
  chomp($resp_dir = <STDIN>);
}

opendir DIR, "$resp_dir" or die "Ouverture du repertoire $resp_dir impossible $!";

foreach $file (sort readdir DIR) {
  # $file = "$file\n";
  print <STDOUT>, $file;
  push @lsdir, $file;
}
# on aurai pu ecrire juste :               @lsdir = readdir(DIR);


print "\n$x\nquelle extentions voulez vous modifier:\n";
chomp($extini = <STDIN>);
while (! &correcte($extini)) {
  print "veuillez entrer une extention correcte (3caracteres), expl: txt\n";
  chomp($extini = <STDIN>);
}

print "par quelle extention voulez vous la remplacer?\nnotez que vous aurez a valider chaque chagement\n";
chomp($extvoulu = <STDIN>);
while (! &correcte($extvoulu)) {
  print "veuillez entrer une extention correcte, expl: xxx\n";
  chomp($extvoulu = <STDIN>);
}
# attention extention ne contient que 3 caract et non pas ".xxx" (4)

foreach $file(@lsdir) {
  chomp $file;
  next if $file=~ /^\.{1,2}/;
  if ($file =~ /\.($extini)$/i) {
    ($fileroot, $ext) = split(/\./, $file);
    $fileout = "$fileroot" . "\.$extvoulu";
    print "modification de $file en $filout: \[O\/N\]\n";
    chomp($resp = <STDIN>);
    next if ($resp =~ /^n/i);
    # ici passer la commande que vous désirez appliquer à ce fichier
    print "$file va etre renomer en $fileout\n";
    rename($file, $fileout) or die "impossible de changer les noms voir droit acces $!";
    print "le fichier $file a ete modifie en $fileout\n";
  }
}
closedir DIR or die "Fermeture impossible $!";

sub correcte($ext) {
  my ($ext)= @_;
  if ($ext =~ /^\w{1,3}/) {
    return 1;
  }
  else {
    return 0;
  }
}

END;