Perl: variable dans tableau ??
Résolu/Fermé
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
-
12 févr. 2014 à 18:27
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 19 févr. 2014 à 21:11
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 19 févr. 2014 à 21:11
A voir également:
- Perl: variable dans tableau ??
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- PERL -- liste - Forum Perl
- Perl foreach ✓ - Forum Perl
- Perl substitution ✓ - Forum Perl
4 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 13/02/2014 à 13:46
Modifié par [Dal] le 13/02/2014 à 13:46
Salut LezardMoo,
Est-ce cela que tu veux faire :
Dal
Est-ce cela que tu veux faire :
#!/usr/bin/perl use strict; use warnings; my $st = q(root> root> root> root> root> root> root> clem>); # capture globale des occurrences de suites de # tous caractères consécutifs mais pas de > my @matches = ($st =~ /([^>]+)/g); print @matches;
Dal
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 11:55
19 févr. 2014 à 11:55
arf Dal je t'ai rédigé une réponse mais ne l'ai pas posté...
Donc en fait c'est bien ce que je voudrais mais le problème c'est que ma variable $userSplit[1] n'est pas une liste.
Si je fais par exemple
@tab = split(/>/, $userSplit[1]);
j'obtiens bien un split a ce niveau />/
ce qui va me donner
root
root
root
root
root
root
seulement, si je fais print $tab[0];
je vais avoir ca qui sort
root
root
root
root
root
root
donc par logique si je fais print $tab[1]
ERREUR
Donc ce que je voudrais c'est un moyen de récupérer cette "liste" à raison d'un root par cellule.
$tab[0]; => root
$tab[1]; => root
$tab[2]; => root
et ainsi de suite.
Je ne sais pas si j'ai été assez clair, la tout de suite j'ai la tete dans HA/DRDB donc je suis pas à fond sur le dev, si tu as besoin de précision n'hésite pas
Merci Dal
Donc en fait c'est bien ce que je voudrais mais le problème c'est que ma variable $userSplit[1] n'est pas une liste.
Si je fais par exemple
@tab = split(/>/, $userSplit[1]);
j'obtiens bien un split a ce niveau />/
ce qui va me donner
root
root
root
root
root
root
seulement, si je fais print $tab[0];
je vais avoir ca qui sort
root
root
root
root
root
root
donc par logique si je fais print $tab[1]
ERREUR
Donc ce que je voudrais c'est un moyen de récupérer cette "liste" à raison d'un root par cellule.
$tab[0]; => root
$tab[1]; => root
$tab[2]; => root
et ainsi de suite.
Je ne sais pas si j'ai été assez clair, la tout de suite j'ai la tete dans HA/DRDB donc je suis pas à fond sur le dev, si tu as besoin de précision n'hésite pas
Merci Dal
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
19 févr. 2014 à 13:12
19 févr. 2014 à 13:12
pas de pb LezardMoo
dans ta dernière réponse, pour moi ce n'est plus clair ce que tu as dans $userSplit[1] (par rapport à ce que tu disais dans ton message d'origine).
Comme tout découle de là, stp, peux tu faire :
avant ton split, et me dire ce qui sort, afin d'y voir plus clair.
Dal
dans ta dernière réponse, pour moi ce n'est plus clair ce que tu as dans $userSplit[1] (par rapport à ce que tu disais dans ton message d'origine).
Comme tout découle de là, stp, peux tu faire :
use Data::Dumper; print Dumper($userSplit[1]); exit;
avant ton split, et me dire ce qui sort, afin d'y voir plus clair.
Dal
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 13:22
19 févr. 2014 à 13:22
Ca marche, la je viens d'avoir une tuile sur drdb, j'essaie de te sortir ça dans l'aprem
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 17:23
19 févr. 2014 à 17:23
Voici le retour de
print Dumper($userSplit[1]);
exit;
$VAR1 = 'root>
';
Que dois je en conclure ?
Parce que si je fait une analyse simple de la sortie je comprend que je devrait normalement pouvoir récup les autres valeurs une a une en les mettant dans un tableau, suis je sur la bonne voie ?
print Dumper($userSplit[1]);
exit;
$VAR1 = 'root>
';
Que dois je en conclure ?
Parce que si je fait une analyse simple de la sortie je comprend que je devrait normalement pouvoir récup les autres valeurs une a une en les mettant dans un tableau, suis je sur la bonne voie ?
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 19/02/2014 à 17:52
Modifié par [Dal] le 19/02/2014 à 17:52
Il n'y a qu'une seule ligne dans
dans
Le reste de tes données ne serait pas dans
fais :
Dal
$userSplit[1](en fait une avec \n à la fin, donc techniquement deux). Il n'y a pas les données :
root>
root>
root>
root>
root>
root>
root>
clem>
dans
$userSplit[1]comme tu le disais.
Le reste de tes données ne serait pas dans
$userSplit[0],
$userSplit[2],
$userSplit[3],... c'est à dire dans le tableau
@userSplit?
fais :
print Dumper(@userSplit); exit;
Dal
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 18:18
19 févr. 2014 à 18:18
Penses tu...
J'ai déjà testé, en fait userSplit[0] contient
Jan 12 01:08:34 testmail postfix/pickup[16791]: 720D544594: uid=0 from=
Parce que j'ai splité au "<"
Ensuite userSplit[1] vide et ainsi de suite.
Ce qui est étonnant car si je print userSplit[1] j'ai tout les root et clem qui s'affichent...
J'ai déjà testé, en fait userSplit[0] contient
Jan 12 01:08:34 testmail postfix/pickup[16791]: 720D544594: uid=0 from=
Parce que j'ai splité au "<"
Ensuite userSplit[1] vide et ainsi de suite.
Ce qui est étonnant car si je print userSplit[1] j'ai tout les root et clem qui s'affichent...
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 18:18
19 févr. 2014 à 18:18
d'un coté... je suis dans une bloucle ^^ ceci expliquerait cela alors.
Par contre je ne sais pas comment les compter du coup
Par contre je ne sais pas comment les compter du coup
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 19/02/2014 à 20:04
Modifié par [Dal] le 19/02/2014 à 20:04
ok, je vois, tu peux utiliser push pour empiler les résultats dans un tableau
sans split ni fonction, en capturant juste ce que l'on veut avec le if, cela donne :
https://perldoc.perl.org/functions/push
Dal
PS : ça va mieux ton drdb ?
sans split ni fonction, en capturant juste ce que l'on veut avec le if, cela donne :
my @users; while (my $lines = <MAIL>) { if ($lines =~ m/$date/){ if ($lines =~ /^.*[0-9]+:[0-9]+:[0-9]+.*<(.*?)>/){ push @users, $1; } } } # faire ce que l'on veut avec @users
https://perldoc.perl.org/functions/push
Dal
PS : ça va mieux ton drdb ?
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 20:58
19 févr. 2014 à 20:58
ok je vais tester, il me semble que j'ai déjà essayé (mai sje vais restester) et que ca m'avait donné le même résultat, indice 0 du tableau = toute la sortie, le reste vide...
Oui ca va mieux, en fait c'est sur deux machines un peu vieille (Debian 5 en plus de ca) matos un peu fatigué, un petit mélange de tout ca nous donne une petite saturation système...
En réduisant la vitesse de transfert des données ca c'est arrangé un peu mais va falloir que je pousse au dessus pour un upgrade matériel...
Oui ca va mieux, en fait c'est sur deux machines un peu vieille (Debian 5 en plus de ca) matos un peu fatigué, un petit mélange de tout ca nous donne une petite saturation système...
En réduisant la vitesse de transfert des données ca c'est arrangé un peu mais va falloir que je pousse au dessus pour un upgrade matériel...
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
19 févr. 2014 à 21:11
19 févr. 2014 à 21:11
HALLELUJAH !!!
Merci Dal c'était ca la solution, j'ai testé avec un petit print $users[4] au pif et hop il me sort "root" c'est parfait :D
Bon maintenant je vais pouvoir plancher sur la suite (j'ai commencé une nouvelle version from scratch, je vais pouvoir reprendre la première)
Merci Dal c'était ca la solution, j'ai testé avec un petit print $users[4] au pif et hop il me sort "root" c'est parfait :D
Bon maintenant je vais pouvoir plancher sur la suite (j'ai commencé une nouvelle version from scratch, je vais pouvoir reprendre la première)