[PERL] - diff d'une sortie d'un programme
Résolu/Fermé
EverDraft
Messages postés
24
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
23 août 2008
-
2 déc. 2007 à 00:47
EverDraft Messages postés 24 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 23 août 2008 - 2 déc. 2007 à 13:38
EverDraft Messages postés 24 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 23 août 2008 - 2 déc. 2007 à 13:38
A voir également:
- [PERL] - diff d'une sortie d'un programme
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
- Desinstaller un programme - Guide
4 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
2 déc. 2007 à 00:56
2 déc. 2007 à 00:56
Salut,
Si tu veux capturer le résultat d'une commande il faut utiliser plutôt qx// au lieu de system()
voici un exemple qui pourra peut être t'aider
Exécution
Si tu veux capturer le résultat d'une commande il faut utiliser plutôt qx// au lieu de system()
voici un exemple qui pourra peut être t'aider
#!/usr/bin/perl use strict;use warnings; my $cmd = qx/sh --version | head -1/; print "$cmd\n"; if (qx/sh --version | head -1/ eq "GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)\n"){ print "OK\n"; }else{ print "KO\n"; } __END__
Exécution
lami20j@debian:~/trash$ perl ccm.pl GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu) OK
EverDraft
Messages postés
24
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
23 août 2008
1
2 déc. 2007 à 01:48
2 déc. 2007 à 01:48
Merci pour ta reponse mais mon probleme persiste toujours,
avec tes conseils j'ai essaye mais j'obtiens:
"Can't exec "qx/../42sh": No such file or directory at ./moulette.pl line 80.
Use of uninitialized value in concatenation (.) or string at ./moulette.pl line 81."
j'ai juste modifie "qx/sh" par "qx/../42sh":
my $cmd = `qx/../42sh --version | head -1/`;
print "$cmd\n";
if ("qx/../42sh --version | head -1/" eq "42sh version is 0.5\n"){
print "OK\n";
}else{
print "KO\n";
}
Si tu pense savoir d'ou viens le probleme je cherche toujours...
En tout cas merci quand meme.
avec tes conseils j'ai essaye mais j'obtiens:
"Can't exec "qx/../42sh": No such file or directory at ./moulette.pl line 80.
Use of uninitialized value in concatenation (.) or string at ./moulette.pl line 81."
j'ai juste modifie "qx/sh" par "qx/../42sh":
my $cmd = `qx/../42sh --version | head -1/`;
print "$cmd\n";
if ("qx/../42sh --version | head -1/" eq "42sh version is 0.5\n"){
print "OK\n";
}else{
print "KO\n";
}
Si tu pense savoir d'ou viens le probleme je cherche toujours...
En tout cas merci quand meme.
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
2 déc. 2007 à 09:54
2 déc. 2007 à 09:54
Salut,
utilise le chemin absolu
comme la séparation des répertoires est faite avec des slash alors qx// ne vas rien comprendre puisque après le 2 slash Perl va croire qu'il doit lire une commande
Donc en ce cas tu peut faire comme ça
- mettre un backslash avet chaque slash à l'intérieur de qx//
lami20j
utilise le chemin absolu
comme la séparation des répertoires est faite avec des slash alors qx// ne vas rien comprendre puisque après le 2 slash Perl va croire qu'il doit lire une commande
Donc en ce cas tu peut faire comme ça
- mettre un backslash avet chaque slash à l'intérieur de qx//
qx/\/chemin\/vers\/commande/- utilise un autre séparateur pour qx
qx[/chemin/vers/commande] qx(/chemin/vers/commande) qx{/chemin/vers/commande}--
lami20j
EverDraft
Messages postés
24
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
23 août 2008
1
2 déc. 2007 à 13:38
2 déc. 2007 à 13:38
Un grand merci a mon sauveur.
La solution etait bien de changer de separateur.
Mon prgramme de diff marche nikel.
Merci vraiment.
Voila la solution:
my $pwd = `pwd`;
if (qx{$pwd../42sh --version} eq "42sh version is 0.5\n"){
print "OK\n";
}else{
print "KO\n";
}
La solution etait bien de changer de separateur.
Mon prgramme de diff marche nikel.
Merci vraiment.
Voila la solution:
my $pwd = `pwd`;
if (qx{$pwd../42sh --version} eq "42sh version is 0.5\n"){
print "OK\n";
}else{
print "KO\n";
}