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 :

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;
É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
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;
			}
		}
}
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
# !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;
}
Pouvez vous m'aider pour faire la fonction de comptage des tabulations en début de ligne, je ne vois pas trop comment faire.

Merci d'avance pour vos conseils et réponses