Rechercher : dans
Par :

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

Dernière réponse le 4 oct 2007 à 17:09:47 Toine, le 26 aoû 2003 à 18:09:33 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [PERL] problème avec la fonction exec() » dans :
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
Comment fonctionne Picasa VoirPicasa est un logiciel de gestion et de retouche de photographies numériques, disponible en français depuis 2006. Fonctionnalités Ce logiciel permet aussi de recadrer les photos, d’en arranger les couleurs, et de les retoucher de façon assez...
Perl - Les fonctions VoirLa notion de fonction et de procédure On appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la procédure dans le corps du programme principal. Les procédure permettent d'exécuter dans plusieurs...
Perl - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...

1

pouet, le 27 aoû 2003 à 02:03:36

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

Répondre à pouet

2

Toine, le 27 aoû 2003 à 10:39:04

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

Répondre à Toine

3

Jeff, le 27 aoû 2003 à 12:33:42
  • +1

Essayes le chemin absolu pour la commande perl... c'est elle qu'il ne connaît pas ;-) Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

4

Toine, le 27 aoû 2003 à 14:03:27

Non c'était pas ça !

Réponse ici :

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

Merci quand même ;)
Toine

Répondre à Toine

5

Mellyben, le 27 aoû 2003 à 18:01:03

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.

Répondre à Mellyben

6

jérôme, le 8 oct 2003 à 10:25:14

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!

Répondre à jérôme

7

nath, le 23 jan 2007 à 17:46:34

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
...

Répondre à nath

8

 lami20j, le 23 jan 2007 à 20:08:43

Salut nath,

je pense que depuis 2003, il a trouvé la solution :-) lami20j

Répondre à lami20j