Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1845 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PERL] execution de programme externe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] execution de programme externe

n°127926
cadoudal56
Posté le 18-04-2002 à 15:11:38  profilanswer
 

hello,
 
bon je vais faire en sorte de pas rentrer dans le top des posts a la con....
 
Voici mon probleme, je fais essayer d'etre bref et clair....
 
Je dois ressortir pas mal de données d'une base de données, la dedans je recupere le nom d'une image.
cette image doit subir un traitement, puis etre deplaceé vers un autre répertoire....
 
donc je sors mes données, je recupere l'image, jusqu'ici ok
le deplacement ok....
 
mais comment je fais pour executer le programme externe ??
 
le programme est un executable, son role, ouvrir l'image, recolorier l'avant et l'arriere plan, coller un digimarc etc...
il fait tout tout seul, donc pas besoin que je m'emmerde a coder ces taches en perl.
 
Je souhaiterais que le programme Perl s'execute, s'arrete un moment, execute le .exe et reparte tranquillement....
 
j'ai trouvé une commande :
system(truc.exe- tralala)
 
mais cela ne fonctionne pas...
 
je comprend pas... pour commencer, le chemin d'acces au programme, faut que je mette le chemin entier ?? (style C:/test/toudu/truc.exe ou je peux m'en sortir avec des ../../truc.exe
 
si une ame charitable pouvait m'aider...
 
@+
cadou
PS : des liens, pages explicatives, script pratique etc... serait egalement appréciée au cas ou la personne n'aurait pas le temps de me faire un roman sur cette question....

mood
Publicité
Posté le 18-04-2002 à 15:11:38  profilanswer
 

n°127946
Tentacle
Posté le 18-04-2002 à 15:27:02  profilanswer
 

Essaie plutôt  
system("truc.exe -tralala" );
 
avec les guillemets quoi :)  
Pour le chemin tu programmes, tu peux mettre le chemin complet, ou relatif, comme tu veux.
 
Tu peux aussi faire ça :
`truc.exe -tralala`;
 
le caractère qui ressemble à une quote n'en ai pas une, mais la touche AltGr-7

n°127949
cadoudal56
Posté le 18-04-2002 à 15:31:46  profilanswer
 

je te jure, je l'ai essayé dans tous les sens, avec ou sans guillemets, guillemets simple, chemin en dur ou relatif etc.... pas moyen....
 
si j'ai bien compris system() cela ouvre le shell je crois...
 
Je dois par contre préciser que je suis sous XP....
 
Bien evidement j'ai tenter de debugguer a la main dans tout les sens....
 
Les .bat ne marche pas, par contre si j'ouvre command et que je tape a la main ca passe....
 
Une idée ou tu as des infos que j'aurais pas concernant XP ??
 
merci d'avance
@+
cadou

n°127952
Tentacle
Posté le 18-04-2002 à 15:33:39  profilanswer
 

non system n'ouvre pas de console, mais il exécute une commande DOS (ça marche sous win2000 donc pas besoin de DOS,  juste une 'émulation';).
 
Si tu veux connaître l'erreur qu'il te ramène, lance ton programme Perl à partir d'une console, ça pourrait être intérressant :)

n°127959
kao
Shazbot!
Posté le 18-04-2002 à 15:39:32  profilanswer
 

cadoudal56 a écrit a écrit :

hello,
bon je vais faire en sorte de pas rentrer dans le top des posts a la con....




 
 :hello:

n°127961
cadoudal56
Posté le 18-04-2002 à 15:44:18  profilanswer
 

j'aimerais bien mais je peux point....
 
c'est tellement gros (70 k le script, sacré bestiau !!)
et il y a tellement de parametres a la con que pour le lancer sous DOS je risque de ramer grave....
 
mais bon si on m'assure que c'est bien system("truc.exe -tralala" ) c'est que j'ai du me planter quelque part....
 
 
Je scripte beaucoup sous PERL depuis plus d'un an deja, j'arrive a faire des trucs de fou... Mais le lancement de programme externe c'est tout nouveau pour moi....
 
J'ai vu que l'on pouvait compiler du perl, mais j'ai aucune idée de la facon de faire, ni a quoi cela pourrait me servir...
 
J'arrive a me servir du debuggueur PERL, mais je ne vais pas plus loin....
 
merci quand meme
cadou

n°128110
Aricoh
gentil mais fo po pousser
Posté le 18-04-2002 à 19:54:18  profilanswer
 

pourrais-tu dans ton code insérer ceci :
 
eval {
    system ("truc.exe ..." );
};    # ne pas oublier le ; !!!
if ($@) {
    print "mon exe marche po :\n$@";
}
 
le fait d'évaluer ton expression (system ...) exécutera ton programme externe mais si celui-ci veut pas marcher, il doit retourner un message d'erreur sur STDERR que tu ne topes pas habituellement. Ici, via eval, si erreur il y a, son contenu sera envoyé à la variable $@. Si $@ est vrai, tu n'as plus qu'à le printer et tu sauras ce qui merde
 
à essayer aussi si ça marche pas avec `truc.exe ...` (attention, ce sont des anti quotes) si eval de system donne rien de plus


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°128237
cadoudal56
Posté le 19-04-2002 à 08:25:11  profilanswer
 

ah merci aricoh, j'avais pas penser a essayer ce type d'expression...
Je l'ai deja vu mais jamais essayer...
 
merci
@+
cadou
PS : je vous tiens au jus...

n°128238
Aricoh
gentil mais fo po pousser
Posté le 19-04-2002 à 08:27:01  profilanswer
 

arf, ça fait pas longtemps que j'ose l'essayer, ça m'a été d'une utilité importante dans un script où je crée des enregistrements dans une base Oracle via Perl
 
Sans eval, j'étais incapable de gérer les erreurs car dès qu'Oracle renvoyait une erreur, mon script était cuit illico, maintenant ça va nettement mieux [:yaisse2]


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°129098
Tentacle
Posté le 21-04-2002 à 21:31:35  profilanswer
 

Au fait avec la commande system, visiblement on passe les arguments comme des éléments d'une liste, en gros tu peux fournir un tableau à system contenant le path du prog, puis les arguments.
 
Dans ton cas essaie ça :

Code :
  1. my @args = ("truc.exe", "-tralala" );
  2. system (@args);

mood
Publicité
Posté le 21-04-2002 à 21:31:35  profilanswer
 

n°130198
cadoudal56
Posté le 24-04-2002 à 14:52:53  profilanswer
 

hello,
 
bon ben le coup du eval.....
Le script a l'air de passer...
 
Deja j'ai un probleme avec ce con de prg qui veut pas prendre les noms de repertoire avec des espaces... pas pratqiue car je suis dans Program files
 
et le second probleme est qu'il semble que j'ai un probleme d'entete. Je mets les entete html de base, mais j'ai une internal server error et au debuggueur, le script est correct...
 
Pige plus moi...
Je vas essayer ce coup du tableau...
 
@+
cadou

n°130201
Tentacle
Posté le 24-04-2002 à 14:54:36  profilanswer
 

Ou Directos :
 

Code :
  1. system ("toto", "-option1", "-option2" );


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PERL] execution de programme externe

 

Sujets relatifs
[Perl] J'arrive pas a obtenir ce que je veux avec les regexp[PERL] supression des espaces de début et de fin dans une chaine
[Perl] comment créer un fichier (text) et y ecrire des chaines de caraprogramme qui "lance" d'un index.htm lorsqu'on met un cdrom
Programme qui envoie des SMS[perl] ptit soucis
Erreur OLE AUTOMATION sur programme compilé par Windev[perl] named pipes
Installation de Perl sous win2k pour stats hl[perl] howto sockets
Plus de sujets relatifs à : [PERL] execution de programme externe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR