[PERL] comparaison de chaines
Résolu/Fermé
snowsurfer69
Messages postés
10
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2007
-
15 juin 2007 à 15:36
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 20 juin 2007 à 10:25
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 20 juin 2007 à 10:25
A voir également:
- [PERL] comparaison de chaines
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Comparaison million milliard - Accueil - Technologies
- Nouvelles chaînes tv 2024 - Accueil - TV & Vidéo
- Denon perl pro test - Accueil - Audio
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
7 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
15 juin 2007 à 16:34
15 juin 2007 à 16:34
Salut,
essaie comme ça
lami20j
essaie comme ça
#!C:\\Perl\\bin\\perl use strict; use warnings; open IN, "test.txt" or die "E/S : $!\n"; my $path = 'U:\perl\dossier1/Dossier 21/tournoi pétanque 17juin 003.jpg = 66215'; print grep { /^$path$/ } <IN>; close IN;--
lami20j
snowsurfer69
Messages postés
10
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2007
18 juin 2007 à 09:49
18 juin 2007 à 09:49
Salut!
Lorsque j'execute ton code il ne se passe rien!
je l'ai un peu modifié :
"print grep ( $path , <IN>);"
au lieu de :
"print grep { /^$path$/ } <IN>;"
et cela m'affiche alors tout le contenu de mon fichier texte;
1-Quelle est la différence entre ces 2 écriture : '$path' et '/^$path$/'.
2-Finalement comment faire pour tester le présence de ma chaine '$path' dans mon fichier?
Lorsque j'execute ton code il ne se passe rien!
je l'ai un peu modifié :
"print grep ( $path , <IN>);"
au lieu de :
"print grep { /^$path$/ } <IN>;"
et cela m'affiche alors tout le contenu de mon fichier texte;
1-Quelle est la différence entre ces 2 écriture : '$path' et '/^$path$/'.
2-Finalement comment faire pour tester le présence de ma chaine '$path' dans mon fichier?
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
18 juin 2007 à 11:03
18 juin 2007 à 11:03
Salut,
mets ton fichier sur cjoint pour le tester
si je t'ai donné la commande c'est parce que ça marche dans l'environnement que je l'ai testé
je vais t'expliqué après
mets ton fichier sur cjoint pour le tester
si je t'ai donné la commande c'est parce que ça marche dans l'environnement que je l'ai testé
je vais t'expliqué après
snowsurfer69
Messages postés
10
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2007
18 juin 2007 à 11:28
18 juin 2007 à 11:28
voila mon fichier texte :
https://www.cjoint.com/?gslz6AXODO
https://www.cjoint.com/?gslz6AXODO
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
18 juin 2007 à 11:57
18 juin 2007 à 11:57
Je vais voir ce soir, mais tu peux déjà teste avec ça
mais en aucun cas comme tu l'as fait
print grep ( $path , <IN>);
Il ne faut pas exces avec les paranthèses :-))
il faut voir la fonction grep de Perl pour comprendre
print grep { /^$path/ } <IN>;ou
print grep { /$path/ } <IN>;
mais en aucun cas comme tu l'as fait
print grep ( $path , <IN>);
Il ne faut pas exces avec les paranthèses :-))
il faut voir la fonction grep de Perl pour comprendre
snowsurfer69
Messages postés
10
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2007
20 juin 2007 à 09:19
20 juin 2007 à 09:19
Salut!
Finalement j'ai eu recours a une technique différente pour parcourir mes chaines :
#############################################################
our $presence = 0;
print "Fonction compare \n";
chomp($path); #retire le dernier caractère de la chaine; ici le "\n"; pour permettre la comparaison de chaines.
for ($i=0 ; $i <= $#tab ; $i++)
{
chomp(@tab[$i]);#retire le dernier caractère de la chaine; ici le "\n"; pour permettre la comparaison de chaines.
if ($path eq @tab[$i])
{
$presence = 1;
}
#seek (COMP,0,0); # retour au debut du fichier.
}
$path = $path."\n"; # on remet le dernier caraéctère de fin de chaine pour une ecriture ulterieure dans le fichier plus lisible
return $presence; # On retourne la valeur de resultat du test.
#############################################################
voila certainement plus barbare que "grep" mais cela fonctionne et au moins ... je comprend comment lol!!!
mais merci beaucoup a Lami20j pour son aide
a+
Finalement j'ai eu recours a une technique différente pour parcourir mes chaines :
#############################################################
our $presence = 0;
print "Fonction compare \n";
chomp($path); #retire le dernier caractère de la chaine; ici le "\n"; pour permettre la comparaison de chaines.
for ($i=0 ; $i <= $#tab ; $i++)
{
chomp(@tab[$i]);#retire le dernier caractère de la chaine; ici le "\n"; pour permettre la comparaison de chaines.
if ($path eq @tab[$i])
{
$presence = 1;
}
#seek (COMP,0,0); # retour au debut du fichier.
}
$path = $path."\n"; # on remet le dernier caraéctère de fin de chaine pour une ecriture ulterieure dans le fichier plus lisible
return $presence; # On retourne la valeur de resultat du test.
#############################################################
voila certainement plus barbare que "grep" mais cela fonctionne et au moins ... je comprend comment lol!!!
mais merci beaucoup a Lami20j pour son aide
a+
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
20 juin 2007 à 10:25
20 juin 2007 à 10:25
Salut,
je n'ai pas repondu puisqu'il y a une chose que je n'ai pas compris (en bref sous win ne fonctionne pas - je vais voir plus tard pourquoi)
le plus important c'est que as obtenu ce que tu veux
En revanche si tu veux tu peux tester ce code
for ($i=0 ; $i <= $#tab ; $i++)
{
chomp(@tab[$i]);
if ($path eq @tab[$i])
{
$presence = 1;
}
En bref si tu peux faire chomp directement sur le tableau sans avoir besoi de faire une boucle
aussi celui là
je n'ai pas repondu puisqu'il y a une chose que je n'ai pas compris (en bref sous win ne fonctionne pas - je vais voir plus tard pourquoi)
le plus important c'est que as obtenu ce que tu veux
En revanche si tu veux tu peux tester ce code
chomp @tab; foreach(@tab){ $presence = 1 if $path eq $_; }qui remplace celui là
for ($i=0 ; $i <= $#tab ; $i++)
{
chomp(@tab[$i]);
if ($path eq @tab[$i])
{
$presence = 1;
}
En bref si tu peux faire chomp directement sur le tableau sans avoir besoi de faire une boucle
aussi celui là
foreach(chomp @tab){ $presence = 1 if $path eq $_; }