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

  FORUM HardWare.fr
  Programmation
  Perl

  Script appelant un autre... [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script appelant un autre... [RESOLU]

n°1086431
babar9160
Fan d'Ada et de Perl...
Posté le 17-05-2005 à 11:41:32  profilanswer
 

Bonjour,
 
Voilà j'ai deux scripts Perl et j'aimerais que l'un deux appelle l'autre durant l'execution.
Ce ne sont pas des modules donc pas possible de faire d'appel avec ::
Quelqu'un aurait-il une idée ?
 
Merci d'avance.


Message édité par babar9160 le 27-05-2005 à 13:34:53
mood
Publicité
Posté le 17-05-2005 à 11:41:32  profilanswer
 

n°1086446
babar9160
Fan d'Ada et de Perl...
Posté le 17-05-2005 à 11:57:18  profilanswer
 

C'est bon j'ai trouvé ... j'ai même honte d'avoir demander :$
 
il suffit de faire dans mon premier scritp  

Code :
  1. exec("script_deux.pl" );


 
il y aussi la possibilité de faire :

Code :
  1. my @command = ("perl.exe","script_deux.pl" );
  2. system(@command);

n°1086471
Elmoricq
Modérateur
Posté le 17-05-2005 à 12:21:14  profilanswer
 

Et tu peux également utiliser qx//, ou aussi les "apostrophes  inversées" (caractère ` = ALT-GR + 7)
 
Sachant qu'il y a des petites subtilités concernant les différents modes d'exécution.
 
Ainsi :
exec(commande) remplace le programme courant. Ce qui signifie qu'un exec() qui réussit ne revient jamais au script PERL. Ce dernier est arrêté.
 
system(commande) duplique (fork) le processus courant avant l'exécution de commande, et attend que cette exécution se termine avant de poursuivre l'exécution du script PERL. C'est comme un exec() qui ne quitte pas le script, en somme.
 
exec() et system() retournent le code retour de commande. Ces deux fonctions ne permettent pas d'intercepter les sorties. C'est à ça que sert qx/commande/ (ou son équivalent `commande`).
 
Note que tu peux aussi utiliser la commande open() en conjonction avec les pipes (car. '|' ).

n°1086586
pospos
Posté le 17-05-2005 à 13:59:03  profilanswer
 

pour lancer un script externe, tu peux aussi utiliser do:

Code :
  1. do "script.pl"


par rapport à un exec ou un system l'avantage est qu'on ne lance pas un deuxieme interpreteur. On peut meme lire/ecrire les memes variables.
 
Dans tous les cas ca n'est pas bon signe au niveau du design. Mieux vaut essayer de gerer ce genre de chose avec des packages.


Message édité par pospos le 17-05-2005 à 13:59:27
n°1086754
babar9160
Fan d'Ada et de Perl...
Posté le 17-05-2005 à 15:25:06  profilanswer
 

Oui je le sais bien, le truc c'est que c'est une première approche. Mais le package étant bien plus pratique sera mis en place d'ici peu, merci en tout cas à vous deux :p

n°1099333
mc40
Posté le 27-05-2005 à 11:59:29  profilanswer
 

Alors juste un petit complément!!!
j'ai un cgi qui lance grace a system(commande) un script.pl sur mon sever après le lancement je récupère le PID que je stock dans un fichier. Aprés un autre script CGI récupère le PID et me kill -9 mon script.pl.  
Je voulais juste savoir si ma démarche tient la route ou si il y a un moyenne plus élégant de faire ça!!

n°1099362
Elmoricq
Modérateur
Posté le 27-05-2005 à 12:08:20  profilanswer
 

Citation :

Aprés un autre script CGI récupère le PID et me kill -9 mon script.pl.


 
[:le poney de mr pink]
 
C'est horrible.
Déjà le -9 n'est pas obligatoire. Pas sûr que tu aies besoin d'un SIGKILL pour stopper ton script.
 
En plus, ton architecture me semble bizarre. Pourquoi ton script.pl a-t'il besoin d'être tué ? Tu peux pas lui donner une condition d'arrêt ?

n°1099446
mc40
Posté le 27-05-2005 à 13:11:48  profilanswer
 

Alors c'est un coté de la prog perl que je n'est jamais explorer je t'explique exactement la finalitée de la chose!
mon script.pl qui est sur mon serveur lancer des requettes SNMP a intervale régulier. il faudrait que ce script puisse etre démarrer avec comme param l'interval de mesure et aussi qu'il puisse etre stopé et tout ça depuis l'interface web.
un autre truc aussi comment fairais tu pour que mon script.pl soit lancer a intervale régulier?

n°1099733
burgergold
5$? va chez l'diable!
Posté le 27-05-2005 à 15:50:54  profilanswer
 

mc40 a écrit :

Alors c'est un coté de la prog perl que je n'est jamais explorer je t'explique exactement la finalitée de la chose!
mon script.pl qui est sur mon serveur lancer des requettes SNMP a intervale régulier. il faudrait que ce script puisse etre démarrer avec comme param l'interval de mesure et aussi qu'il puisse etre stopé et tout ça depuis l'interface web.
un autre truc aussi comment fairais tu pour que mon script.pl soit lancer a intervale régulier?


 
tu ne le "lance pas" à interval régulier, tu le lance 1 fois et le fait boucler jusqu'à ce que tu rencontre une condition X

n°1100162
mc40
Posté le 28-05-2005 à 01:33:46  profilanswer
 

Oui merci ça je sais met le truc c'est comment envoyer des paramètres a un script qui est deja lancé!!!
Moi je sais pas si vous pouvez m'expliciter tout ça SVP!!

mood
Publicité
Posté le 28-05-2005 à 01:33:46  profilanswer
 

n°1100657
burgergold
5$? va chez l'diable!
Posté le 28-05-2005 à 22:14:26  profilanswer
 

ca sfait pas vraiment envoyer des paramêtre à un script en exécution

n°1101429
mc40
Posté le 30-05-2005 à 11:14:13  profilanswer
 

comment je peut faire au mieux!!! alors déantologiquement parlant?

n°1101430
mc40
Posté le 30-05-2005 à 11:14:59  profilanswer
 

que ça fasse pas trp bricolage !!! :p

n°1101460
pospos
Posté le 30-05-2005 à 11:45:28  profilanswer
 

le mieux dans ce cas c'est de faire de la vraie communication inter process. regarde perlipc (google).
 
sinon tu a toujours la solution du bon vieux fichier que tu check (avec des locks). tu peux aussi passer par une base de donnée simple genre berclay ou sqlite.

n°1101542
mc40
Posté le 30-05-2005 à 12:49:04  profilanswer
 

Oui alors la!! J'avoue que ça me dépasse!!! Je vais voir perlipc!!
Merci pospos.


Message édité par mc40 le 30-05-2005 à 12:49:50
n°1101608
mc40
Posté le 30-05-2005 à 13:52:06  profilanswer
 

heuuu encore un truc!!
lorsque j'appel ma lib SNMP_utils j'ai des erreurs qui sont normales mais j'aimerai ne pas les voir s'afficher sur ma page html il me semble que c'est une option à rajouter à la fin de #! c:\perl\bin\perl.exe -? mais laquelle??


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

  Script appelant un autre... [RESOLU]

 

Sujets relatifs
Authentification LDAP / script WSH[php dynamique]$$var ou $res[$var] ... ca marche pas[resolu mouai]
classe recursive, erreur de logique introuvable... :( [résolu ^^'][Resolu] Bug de lecture de fichier : encodage
[Résolu] Récupérer la valeur d'une variable[PHP/SQL] Problème d'espace dans script de traduction ...
[resolu][dblookup] afficher une valuer par programmation[obsolète Mon script s'occupe que du dernier mot de la BDD..
[Résolu] Identifier une table à partir de la valeur de sa clé primaire[PHP] Recup du nom de la page appelant le script...... [RESOLU]
Plus de sujets relatifs à : Script appelant un autre... [RESOLU]


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