dof

Do in File

alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

Ce script Perl vous servira pour effectuer tout un tas de trucs sur un fichier.
Il accepte le nom du fichier source en argument ainsi que le fichier cible. Il travail directement sur le contenu du fichier.
Il cree en sortie un fichier par defaut sorti_nom_du_fichier.log dans votre rep courant. Alain


  #!/usr/bin/perl -w
  # remd: Dof.pl est un script fait des modifs dans le contenu d'un fichier
  # le nom du fichier peut etre entrer en argument et le nom de sorti aussi
  # usage: dof.pl [Options] nom_de_source nom_de_cible  
  # Option:
  #	 -b pour binmode # ca sert un max
  #        -o pour outout auquel cas il faut entrer un nom pour la cible 
  # ou  dof.pl nom_de_source
  # le contenu du fichier ce trouve dans contenu. Alain Adelmar
  # J'ai écris ce script comme outils et testeur de regex -alain
  # a revoir si on veut faire echange source cible (garder le nom)
  # $ID:
  
  # use strict;
  # use File::Copy;
  # use warnings;
  # utilisation de la date/heure pour maitenant et pour file X
  use DateFrench;
  our $format_affichage = 2;
  our $opt_date_file = 2;
  our $fr_date_now = maintenant("$format_affichage");
  print "$fr_date_now\n";
  
  use Cwd;
  my $dir= cwd;
  
  my $lx = "x" x 20;
  my $argv = my $f = my $fout = my $resp = "";
  my $moi = "alain Adelmar";
  my $recap_lbl= "$0 écris par $moi \nle 21 Avril 2008\nexecuter $fr_date_now\n";
  
  
  #----------------- sortie formatée pour l'affichage fichiers/sorti ---------
  format STDOUT_TOP =
  Page @<< $%   n        ligne                     === ============================================================================= .      # traitement argument - fichier a traiter et verif validité  if (@ARGV) {   if ($ARGV[0] =~ /^-/) {     $ARGV[0] =~ s/-()/($1)/;     ($argv = $ARGV[0]);   # assigne $argv   #    ($argv = "b") if ($ARGV[0]=~ /^b/);   # pour b pour binaire #    ($argv = "u") if ($ARGV[0]=~ /^u/);   # pour u #    ($argv = "l") if ($ARGV[0]=~ /^l/);   # pour latin1 =>
  utf8
  #    ($argv = "o") if ($ARGV[0]=~ /^o/);   # pour output (c.a.d: fichier differant)
      if($argv=~ /o/) {
          if ($ARGV[2] ne "") {
              $fout = $ARGV[2];
  	    $f = $ARGV[1];
  	    print "f vaut $f (source)\nfout vaut $fout (cible)\net est considerer comme argv2\n";
          }
          else {
              print "si vous prennez l option -o il faut indiquer le fichier cible\npar defaut sorti_" .  $ARGV[1] . "\n";
              print "usage: $0 [-blo] [nom_de_la_source] ([nom_de_la_cible] pour option -o)\n";
              chomp($fout = );   
          }
      }
      if ($ARGV[1] ne "") {
        $f = $ARGV[1];
        &veriff;
      }
    }
    else {
      $f = $ARGV[0];
      &veriff;
    }
  }
  else {
    print "$lx\nusage: morrowin.pl [-cou] [fichier_a_traiter] \n(made by $moi)\n";
    #---------demander quel fichier traiter et verifier si il existe
    print "$lx\n";
    print "Indiquez le fichier a traiter:\n";
    chomp($f =);
    &veriff;
  }
  
  
  # création d'un fichier de sortie--------------
  if ($argv =~ /o/) {
      ($fout= "$dir/$fout") if(!($fout =~ /\/|\\/));
      print "désirez vous avoir $fout comme fichier cible?";
      my $resp = ;
      if($resp=~ /^n/i) {
          print "veuillez recommencer tout en indiquant le nom_du_fichier_cible ou path_et_le_nom_du_fichier_cible\n";
      }
  }
  else {
   $fout = "sorti_" . "$rootfile";
  }
  
  
  # ouverture du fichier en lecture seule
  open F, "$f" or die "ouverture de $f impossible $!";
  if ($argv =~ /b/) {
      binmode F;
  }
  @contenu = ;
  close F || die "Fermeture de $f impossible $!";
  
  #----------------------------ici c'est bien -------------------
  my $i++;
  foreach (@contenu) {
    write;
    $i++;
    push @nwcontenu, $_;
  }
  #--------------------------------------------------------------
  
  if($fout eq "") {
    $rootfile = "log.log";
  }
  &logout;
  open FOUT, ">$fout" or die "Ouverture de $fout impossible $!";
  
  print FOUT @nwcontenu;
  close FOUT || die "Fermeture de $fout impossible $!";
  
  if ($argv=~ /l/) {
      # system("iconv -f latin1 -t utf8 $fout");
  }
  
  
  
  
  
  sub veriff {
    if ($f !~ /\/|\\/) {
      $rootfile = $f;
      $f = "$dir\/$f";
    }
    else {
      $rootfile = $f;
      @pathf = split("\/", $rootfile);
      $rootfile = pop @pathf;
    }
    while (!(-f $f)) {
      print "Veuillez entrer un nom de fichier, et son path si ailleur que dans le $dir:\n";
      chomp ($f = );
    }
  }
  
  sub logout {
    my $fout= @_;
  
    $u= 0;
    while (-f $fout) {
      $u++;
      $fout = "$dir\/sorti_" . $u . "_$rootfile";
    }
  }
  
  
  format STDOUT =
  @<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $i, $_ .  END; 
Ce script peut vous aider à effectuer des modifs sur le contenu @contenu d'un fichier
Il travaille par ligne, a vous de modifier ou de travailler avec @contenu.
Moi je m'en sers tout les jours. Alain Adelmar
--Derni&egtave;re mise à jour le Mer 2 Septembre 2009 -- -- Par Adelmar Alain --