[PERL] boucle tableau
Résolu/Fermé
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
-
23 juil. 2008 à 15:00
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 30 juil. 2008 à 16:26
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 30 juil. 2008 à 16:26
A voir également:
- [PERL] boucle tableau
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
17 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
23 juil. 2008 à 23:55
23 juil. 2008 à 23:55
Salut,
Je ne sais pas comment ecrire : si "m" est le dernier caractère de la ligne je regarde le premier caractère de la ligne suivante.
je ne pense pas que le problème est bien posé.
en fait, tu n'as plus des lignes mais des éléments des 2 tableux
donc la question sera quand le dernier caractère de la chaîne qui se trouve à l'index I est m alors je pense à l'élément suivant du tableau celui qui se trouve à I+1 et je vérifie que la 1ère lettre de la chaîne est a
a vrai dire je ne comprends pas ce que tu veux
si tu nous donneras ton fichier de config (donc ce que tu as en Entrée) et tu nous donneras un exemple de ce que tu veux obtenir en Sortie, peut être qu'on trouveras ensemble une solution ;-)
Je ne sais pas comment ecrire : si "m" est le dernier caractère de la ligne je regarde le premier caractère de la ligne suivante.
je ne pense pas que le problème est bien posé.
en fait, tu n'as plus des lignes mais des éléments des 2 tableux
donc la question sera quand le dernier caractère de la chaîne qui se trouve à l'index I est m alors je pense à l'élément suivant du tableau celui qui se trouve à I+1 et je vérifie que la 1ère lettre de la chaîne est a
a vrai dire je ne comprends pas ce que tu veux
si tu nous donneras ton fichier de config (donc ce que tu as en Entrée) et tu nous donneras un exemple de ce que tu veux obtenir en Sortie, peut être qu'on trouveras ensemble une solution ;-)
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
24 juil. 2008 à 09:13
24 juil. 2008 à 09:13
Salut lami20j,
Il est possible que j'ai mal expliqué ce que je souhaitais. Je suis débutante.
Pour répondre à ta question le fichier en entré est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
Le but est de vérifier la syntaxe. Après { je dois trouver '.
Après my%[a-z]+ on doit trouver =>
Après ' je peux trouver , ou ] etc.
Est ce que tu comprends mieux l'exercice ?
Il est possible que j'ai mal expliqué ce que je souhaitais. Je suis débutante.
Pour répondre à ta question le fichier en entré est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
Le but est de vérifier la syntaxe. Après { je dois trouver '.
Après my%[a-z]+ on doit trouver =>
Après ' je peux trouver , ou ] etc.
Est ce que tu comprends mieux l'exercice ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 juil. 2008 à 12:50
24 juil. 2008 à 12:50
Salut,
en bref tu veux faire quelque chose pour analyser si la syntaxe est correcte si j'ai bien compris.
je pense qu'une solution avec les regex peut être faisable
je vais voir ça ce soir ;-) (je suis au boulot et je n'ai pas le temps)
en bref tu veux faire quelque chose pour analyser si la syntaxe est correcte si j'ai bien compris.
je pense qu'une solution avec les regex peut être faisable
je vais voir ça ce soir ;-) (je suis au boulot et je n'ai pas le temps)
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
24 juil. 2008 à 12:58
24 juil. 2008 à 12:58
Oui c'est bien celà.
En ce moment je tente avec les hashs.
Merci lami20j. Bonne après midi.
En ce moment je tente avec les hashs.
Merci lami20j. Bonne après midi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 juil. 2008 à 21:37
24 juil. 2008 à 21:37
Salut,
voici un exemple
voici un exemple
#!/usr/bin/perl use strict; use warnings; while(<DATA>){ print "$. ok\n" if /{\s*'\w+'\s*=\>\s*\[\s*('\w+',)*\s*'\w+'\s*]\s*}/; } __END__ my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } ); my %toto => ( 'AAAAAA' =>{ uuu' => [ 'toto','tata', 'mouloud' ] } ); my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } ); my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' } );
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
25 juil. 2008 à 09:10
25 juil. 2008 à 09:10
Salut,
A quoi correspondent les w+ ?
A quoi correspondent les w+ ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 juil. 2008 à 09:26
25 juil. 2008 à 09:26
Salut,
\w répresent un caractère mot qui peut être a à z ou A à Z ou 0 à 9 ou _ (underscore)
+ c'est un quantificateur qui permet de reconnaître un caractère minimum et maximum combien la mémoire permet ;-)
en fait \w+ correspond à la clase de caratères [a-zA-Z0-9_]+
donc où t'écrit \w+ tu peux écrire [a-zA-Z0-9_]+
\w répresent un caractère mot qui peut être a à z ou A à Z ou 0 à 9 ou _ (underscore)
+ c'est un quantificateur qui permet de reconnaître un caractère minimum et maximum combien la mémoire permet ;-)
en fait \w+ correspond à la clase de caratères [a-zA-Z0-9_]+
donc où t'écrit \w+ tu peux écrire [a-zA-Z0-9_]+
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
29 juil. 2008 à 08:47
29 juil. 2008 à 08:47
Merci.
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 11:39
30 juil. 2008 à 11:39
Bonjour,
Je reviens à mon problème de départ :
si "m" est le dernier caractère de la ligne je regarde le premier caractère de la ligne suivante.
Comme l'a bien compris lami20j, j'ai des éléments de 2 tableaux.
" la question sera quand le dernier caractère de la chaîne qui se trouve à l'index I est m alors je pense à l'élément suivant du tableau celui qui se trouve à I+1 et je vérifie que la 1ère lettre de la chaîne est a".
Quelqu'un a une idée ?
Merci d'avance.
Je reviens à mon problème de départ :
si "m" est le dernier caractère de la ligne je regarde le premier caractère de la ligne suivante.
Comme l'a bien compris lami20j, j'ai des éléments de 2 tableaux.
" la question sera quand le dernier caractère de la chaîne qui se trouve à l'index I est m alors je pense à l'élément suivant du tableau celui qui se trouve à I+1 et je vérifie que la 1ère lettre de la chaîne est a".
Quelqu'un a une idée ?
Merci d'avance.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
30 juil. 2008 à 13:45
30 juil. 2008 à 13:45
Salut,
quand tu écris
quelque soit les conditions tous les éléments des tableaus sont parcourus de la façon suivante
Je vais regarder ce soir
quand tu écris
for ( 0 .. $#t1) { $i = $_ ; my @t2 = split (// , $t1[$i]) ; for ( 0 .. $#t2 ) {
quelque soit les conditions tous les éléments des tableaus sont parcourus de la façon suivante
Pour chaque élément de @t1 Traite les éléments de @t2Je pense qu'il faut faire autrement ;-)
Je vais regarder ce soir
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 14:11
30 juil. 2008 à 14:11
merci lami20j.
Mais est ce que tu comprends bien ce que je souhaite faire ?
Mais est ce que tu comprends bien ce que je souhaite faire ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
30 juil. 2008 à 14:41
30 juil. 2008 à 14:41
Re,
si j'ai bien compris tu souhaites vérifier la syntaxe
toutefois ta demande se référe à une seule ligne
y a-t-il plusieurs lignes?!
peut être que la connaissance de ton fichier de traitement sera utile
si tu as des précisions à faire, alors c'est le moment ;-)
si j'ai bien compris tu souhaites vérifier la syntaxe
toutefois ta demande se référe à une seule ligne
y a-t-il plusieurs lignes?!
peut être que la connaissance de ton fichier de traitement sera utile
si tu as des précisions à faire, alors c'est le moment ;-)
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 15:06
30 juil. 2008 à 15:06
le fichier comporte plusieurs lignes.
Comme je te l'avais dit, il est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
mais il peut s'ecrire
my %toto => (
'AAAAAA' =>{
'uuu' => [ 'toto','tata', 'mouloud' ] } );
ou
my %toto => (
'AAAAAA' =>{
'uuu' => [
'toto',
'tata', 'mouloud' ] }
);
ou
m
y %toto => (
'AAAAAA' =>{
'uuu' => [
'toto',
'tata', 'mouloud' ] }
);
etc...
Pour celà, j'ai donc placé chaque ligne de mon fichier dans un tableau @tabL, puis chaque caractère de chaque ligne de un tableau @tabC. J'enleve tous les espaces, retours chariot, tabulation...
Puis j'essai de faire le traitement.
while ($_ <= $#tabC) {
if ( $tabC[$_] =~ /m/ ) {
LE PROBLEME SE SITUE ICI ***
if ($tabC[++$_] =~ /y/) {
if ($tabC[++$_] =~ /%/) {
print "OK\n";
}
}
}
$_++;
}
**** LE PROBLEME SE SITUE ICI : Je m'explique à nouveau. si le y est à la ligne suivante, la boucle sera terminée.
je voudrais rajouter une condition à savoir, si le caractère m est le dernier caractère de la ligne, il faut passer au premier caractère de la ligne suivante.
En espèrant avoir été assez claire, je te souhaite une bonne après midi
Comme je te l'avais dit, il est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
mais il peut s'ecrire
my %toto => (
'AAAAAA' =>{
'uuu' => [ 'toto','tata', 'mouloud' ] } );
ou
my %toto => (
'AAAAAA' =>{
'uuu' => [
'toto',
'tata', 'mouloud' ] }
);
ou
m
y %toto => (
'AAAAAA' =>{
'uuu' => [
'toto',
'tata', 'mouloud' ] }
);
etc...
Pour celà, j'ai donc placé chaque ligne de mon fichier dans un tableau @tabL, puis chaque caractère de chaque ligne de un tableau @tabC. J'enleve tous les espaces, retours chariot, tabulation...
Puis j'essai de faire le traitement.
while ($_ <= $#tabC) {
if ( $tabC[$_] =~ /m/ ) {
LE PROBLEME SE SITUE ICI ***
if ($tabC[++$_] =~ /y/) {
if ($tabC[++$_] =~ /%/) {
print "OK\n";
}
}
}
$_++;
}
**** LE PROBLEME SE SITUE ICI : Je m'explique à nouveau. si le y est à la ligne suivante, la boucle sera terminée.
je voudrais rajouter une condition à savoir, si le caractère m est le dernier caractère de la ligne, il faut passer au premier caractère de la ligne suivante.
En espèrant avoir été assez claire, je te souhaite une bonne après midi
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 15:22
30 juil. 2008 à 15:22
Autre précision, il y a plusieurs lignes du type que je t'ai donné.
Par exemple:
my %toto => (
'AAAAAA' =>{
'uuu' => [ 'toto','tata', 'mouloud' ] }
'BBBBB' =>{
'SSS' => [
't',
'ta',
'mod'
]
}
);
Par exemple:
my %toto => (
'AAAAAA' =>{
'uuu' => [ 'toto','tata', 'mouloud' ] }
'BBBBB' =>{
'SSS' => [
't',
'ta',
'mod'
]
}
);
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
30 juil. 2008 à 15:39
30 juil. 2008 à 15:39
Re,
en ce cas, je me pose une question bête ;-)
il ne sera mieux d'arranger un peu ton fichier avant de le traiter?!
par exemple transformer tout dans de lignes de genre
comme ça ça sera plus facile de traiter
en ce cas, je me pose une question bête ;-)
il ne sera mieux d'arranger un peu ton fichier avant de le traiter?!
par exemple transformer tout dans de lignes de genre
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] }, 'BBBBB' =>{ 'SSS' => [ 't', 'ta', 'mod' ] } );
comme ça ça sera plus facile de traiter
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 15:45
30 juil. 2008 à 15:45
ah, tu viens de me donner une idée. Je vais créer un fichier temp. Je te tiens au courant.
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2008 à 16:26
30 juil. 2008 à 16:26
Merci lami20j. J'ai la réponse à mon problème en une seule ligne.
Je souhaitais te poser une question, tu travailles dans quel domaine? l'informatique je suppose non?
Je souhaitais te poser une question, tu travailles dans quel domaine? l'informatique je suppose non?