Téléchargement
illégal
Posez votre question Signaler

[PERL] problème avec la fonction exec()

Toine - Dernière réponse le 23 janv. 2007 à 20:08
Bonjour,

Je n'arrive pas à utiliser la fonction exec(). Elle n'arrive jamais à trouver le programme à executer, même si celui-ci est "à côté" du programme PERL en cours d'execution.

Par exemple, j'ai :
p1.pl
p2.pl

je lance p1.pl via un navigateur (serveur web apache)
dans celui-ci, j'écris :
exec ("perl ./p2.pl",@ARGLIST)

et ça ne marche pas !

Code:
[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] Can't exec "perl ./processmail.pl": No such file or directory at

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] f:\PROGRA~1\easyphp\www\bugzilla\post_bug.cgi line 305 (#1)

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] (W exec) A system(), exec(), or piped open call could not execute the

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] named program for the indicated reason. Typical reasons include: the

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] permissions were wrong on the file, the file wasn't found in

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] $ENV{PATH}, the executable in question was compiled for another

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] architecture, or the #! line in a script points to an interpreter that

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] can't be run for similar reasons. (Or maybe your system doesn't support

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] #! at all.)


Merci pour votre aide !
Toine
Lire la suite 

[PERL] problème avec la fonction exec() »

8 réponses
Réponse
+1
moins plus
salut,

au hasard, as tu verifie les permissions? verifie que ton script se trouve dans $ENV{PATH}? as tu essaye de mettre un chemin absolu?

--
pouet
Toine - 27 août 2003 à 10:39
Bonjour !

Merci de bien vouloir m'aider !

>> au hasard, as tu verifie les permissions?
je suis sous windows (désolé)

>>verifie que ton script se trouve dans $ENV{PATH}?
oui c'est ok maintenant

>>as tu essaye de mettre un chemin absolu?
oui j'ai essayé !


Voilà la ligne qui m'embête :

exec ('perl "F:/Program Files/EasyPHP/www/bugzilla/processmail.pl"', @ARGLIST)


[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] Can't exec "perl "F:/Program Files/EasyPHP/www/bugzilla/processmail.pl"":

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] Invalid argument at f:\PROGRA~1\easyphp\www\bugzilla\post_bug.cgi line 305 (#1)

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] (W exec) A system(), exec(), or piped open call could not execute the

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] named program for the indicated reason. Typical reasons include: the

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] permissions were wrong on the file, the file wasn't found in

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] $ENV{PATH}, the executable in question was compiled for another

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] architecture, or the #! line in a script points to an interpreter that

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] can't be run for similar reasons. (Or maybe your system doesn't support

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] #! at all.)



Peux tu m'aider s'il te plait ?
Toine
Jeff- 27 août 2003 à 12:33
Essayes le chemin absolu pour la commande perl... c'est elle qu'il ne connaît pas ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Non c'était pas ça !

Réponse ici :

http://www.developpez.net/forums/viewtopic.php?p=589614#589614

Merci quand même ;)
Toine
Ajouter un commentaire
Réponse
+0
moins plus
Si perl est installé dans c:\perl alors la fonction exec() recherche dans c:\perl puis dans le path , mais attention si tu utilises un prog comme winat alors il, cherche par defaut dans %windir%, le mieux et d'utiliser la fonction suivante:
@argv = "ping -t www.google.com"
$resultat = system(@argv);
if(! $resultat) die "Pas bon";
attention de faire un choix judicieux entre chamins relatifs et absolus pour tes executables.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Je programme actuellement en Perl et dans mon programme Perl, je dois lancer simultanément d'autres programmes.
Cependant, je ne sais pas si une fonction pouvant réaliser ceci existe déjà ou si il y a une autre manière de faire.

Merci pour votre aide!
Ajouter un commentaire
Réponse
+0
moins plus
il existe un tas de maniere de lancer un programme en perl:
1) open (RIEN, "| le_nom_du_prog");
2) `le_nom_du_prog`
attention c'est le caractère se trouvant sur AltGr+7
...
lami20j- 23 janv. 2007 à 20:08
Salut nath,

je pense que depuis 2003, il a trouvé la solution :-)
Ajouter un commentaire
Ce document intitulé « [PERL] problème avec la fonction exec() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?