Generer une liste de chiffre

De Avided.info
Aller à : navigation, rechercher
Ce script en perl permet de generer une liste de tres grand nombre (entre 8 et 16 chiffres) en prennant en entréé un ou plusieurs fichier contenant des intervales de nombre.
Un test de controle de format d'entrée permet l'execution du programme que pour les lignes respectant un format désiré.
Il permet d'apprehender une methode à utiliser pour les point suivant:
- Ouverture et fermeture de fichier avec message d'erreur le cas echéant.
- traitement ligne par ligne des fichier afin de ne pas saturer la mémoire.
- Prise en compte de plusieurs fihiers en argument afin d'être traité
- condition sur une expression regulière avec un contrôle de syntaxe
- decouper une ligne pour récuperer les valeur dans des variable differente (tableau)
- Appel la notion de tableau.
- Utilisation de la boucle "for" avec utilisation de variable. 
#!/usr/bin/perl
# v 1.2
# cree le 18/10/2007
#  sebastien Becue

################################ Info ################################
# genere une liste de n° de chiffre depuis une liste d'interval
#

# permet de prendre en compte plusieurs fichier en parametre
# tous ces fichier seront traité.
foreach (@ARGV) {

 $FILE = $_;

 # traite LIGNE par ligne.
 # ne mets pas toutes les lignes d'un fichier en mémoire.
 open (INPUT, $FILE) || die "Ne peut ouvrir le fichier $FILE: $!";
 while () {
  chomp;
  # test le format de la LIGNE
  # si le format de la ligne n'est pas deux nombres de 8 à 16 caractères numerique
  # separé par un ou plusieurs espace ou tabulation la LIGNE n'est pas traite
  if ( $LIGNE = /\d{8,16}\s+\d{8,16}/ ) {
    # coupe chaque LIGNE en deux
    # cela nous permet d'incerer les valeurs de chaque collone
    # dans des variable differente
    # ici dans une tableau
    my @DEBUT = split /\s+/, "$_";

    # les 0 sont ajoute pour resoudre un prb d'integer
    for $x ("0".$DEBUT[0] .. "0".$DEBUT[1] ) {
      # enleve le zero en DEBUT de LIGNE qui à été ajouté pour un prb d'integer
      $x =~ s/^0//;
      print "$x \n";
    }
   }
 }
 close(INPUT) || die "Ne peut pas fermer le fichier $FILE: $!";
}