Bonjour,
Mon objectif est d'éliminer les lignes et les blocs commençant par un "!" qui sont des commentaires en centura.
Je voudrais donc compter les tabulations en chaque début de lignes (pour identifier les blocs a éliminer).
Afin de savoir où je suis positionné grâce à une fonction.
Voici mon Algo :
Ébauche de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Variable de type number: nIndentComment (indique le niveau d indentation du commentaire) nIndentActuel (indique le niveau d indentation de la ligne en cours) Fonctions: CompteEspaces(nIndentActuel) -> Retourne dans nIndentActuel le nombre d espaces en début de ligne nIndentActuel =0; nIndentComment = 100; while () Compte Espaces(nIndentActuel); Si nIndentComment>=nIndentActuel Si ligne commence par "!" CompteEspaces(nIndentComment); Sinon nIndentComment=100; Ecrire ligne;
Ce code compte les espaces mais pas les tabulations !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 # !usr/bin/perl -w use strict; use warnings; my $nIndentActuel = 0; my $nIndentComment = 100; open FICHIER, '<', "X7allC.apt" or die("E/S : $!\n"); open ECRIRE, '>', "X7allSC.txt" or die("Erreur de création de parser.txt"); sub CompteEspaces(nIndent) { my $nIndent = 0; foreach ( $ligne =~ compter les tabulations ){ $nIndent = $nIndent + 1; } # quand j'ai une tabulation j'incrémente $nIndent, pour retourner le nombre de tabulation dans $nIndent return $nIndent; } while ( my $ligne = <FICHIER> ) { CompteEspaces(nIndentActuel); if ( $nIndentComment >= $nIndentActuel){ if ( $ligne =~ m/!\s*(.+)/i ){ CompteEspaces(nIndentComment) } else{ nIndentComment = 100; print ECRIRE $ligne; } } }
Pouvez vous m'aider pour faire la fonction de comptage des tabulations en début de ligne, je ne vois pas trop comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 # !usr/bin/perl -w use strict; use warnings; my $espaces; my $cpt = 0; open FICHIER, '<', "X7allC.apt" or die("E/S : $!\n"); while ( my $ligne = <FICHIER> ) { chomp ($ligne); $cpt++; $_ = $ligne; $espaces +=tr/ / /; print "Nombre d'espaces : ", $espaces, " sur ligne ", $cpt, "\n"; $espaces = 0; }
Merci d'avance pour vos conseils et réponses
Partager