use strict; use warnings; # l'argument prend en compte un fichier texte my $fh = $ARGV[0]; my $fh_sortie = "$fh.new"; # j'ouvre le fichier en lecture pour lire ligne par ligne open ( my $donnees, '<', $fh ) or die ( "Imposible d'ouvrir le fichier $fh $!" ); # j'ouvre le fichier en écriture pour écrire le nouveau texte corrigé open ( my $sortie, '>', $fh_sortie) or die ( "Imposible d'ouvrir le fichier $fh_sortie $!" ); # tant qu'il y a des lignes, je lis le texte while ( my $ligne = <$donnees> ) { # espacer un nombre 3 par 3 my $num =~ /^\d+$/; # mon numéro = n'importe quel caractère numérique my @tab = split( // ,$num); # je splite mon numéro dans un tableau my @tab_invers = reverse @tab; # j'inverse mon tableau my $compteur = 0; # mon compteur est égal à 0 my $nouveau_num = ""; # je crée une chaine de caractère vide dans laquelle je vais mettre mes chiffres my $nouveau_num_endroit; for my $chiffre (@tab_invers) { # tant qu'il y a des chiffres dans mon tableau inversé $compteur++; # j'incrémente mon compteur $nouveau_num .= $chiffre; # je concatène chaque chiffre à ma chaine de caractère vide $nouveau_num .= "\x{A0}" if $compteur % 3 == 0; # je concatène une espace insécable tous les 3 chiffres } my @nouv_tab = split( // ,$nouveau_num); my @tab_endroit = reverse @nouv_tab; $nouveau_num_endroit = join(" " ,@tab_endroit); # je remets mon numéro à l'endroit print $nouveau_num_endroit, "\n"; # j'imprime mon nouveau numéro print $sortie $ligne; } # je ferme les fichiers lecture et écriture close $donnees; close $sortie;