e voudrais lancer plusieurs script Perl à partir d'un autre script Per

e voudrais lancer plusieurs script Perl à partir d'un autre script Per - Perl - Programmation

Marsh Posté le 29-09-2015 à 14:00:41    

Bonjour a tous,
j'ai plusieurs Perl-Script que je voudrais appeler à partir d'un autre script Perl.
les scripts doivent être exécutés dans l'ordre ci dessous.
 
chaque script Perl a un paramètre d'entrée
 
1-script1.pl a comme paramètres d'entrée: perl script1.pl default.xml * .xml
2-script2.pl a comme paramètres d'entrée: perl script2.pl data.csv
3-script3.pl a comme paramètres d'entrée: perl script3.pl data.csv
4-script4.pl a comme paramètres d'entrée: perl script4.pl data.csv
5-script5.pl a comme paramètres d'entrée: perl script5.pl data.csv
6-script6.pl a comme paramètres d'entrée: perl script6.pl default.xml default.xml
7-script7.pl a comme paramètres d'entrée: perl script7.pl data2.csv default.csv
 
S'il vous plaît quelqu'un peut-il m'aider a résoudre ce probleme?
 
tous mes remercierments

Reply

Marsh Posté le 29-09-2015 à 14:00:41   

Reply

Marsh Posté le 29-09-2015 à 15:22:35    

Pour appeller un autre script dans un script, une des techniques possibles est la suivante:

Code :
  1. use strict;
  2. use warnings;
  3.  
  4. do {
  5.    local @ARGV;
  6.  
  7.    @ARGV = ("Hello", "World!" );
  8.    eval { require "un_autre_script.pl" };
  9. };


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-09-2015 à 16:12:31    

gilou a écrit :

Pour appeller un autre script dans un script, une des techniques possibles est la suivante:

Code :
  1. use strict;
  2. use warnings;
  3.  
  4. do {
  5.    local @ARGV;
  6.  
  7.    @ARGV = ("Hello", "World!" );
  8.    eval { require "un_autre_script.pl" };
  9. };
 

A+,

 


es ce que je peus me permettre donc de traiter mon probleme de la sorte

Code :
  1. use strict;
  2.    use warnings;
  3.    
  4.    do {
  5.        local @ARGV;
  6.    
  7.        @ARGV = ("default.xml", "*.xml",  "data.csv", "data2.csv", "default.csv" );
  8.        eval { require "script1.pl", "script2.pl", "script3.pl", "script4.pl", "script5.pl", "script6.pl", "script7.pl" };
  9.    };
 

et a chaque fois aller sur perl-editor taper les parametres entree

 


Message édité par Henri772 le 29-09-2015 à 16:13:26
Reply

Marsh Posté le 29-09-2015 à 17:10:49    

Non, il faut que tu fasse le boulot a chaque fois:
@ARGV = ("default.xml", "*.xml" );
eval { require "script1.pl" };
@ARGV = ("data.csv" );
eval { require "script2.pl" };
etc.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-09-2015 à 17:31:29    

A la limite, tu peux faire un truc comme ceci je pense:
 

Code :
  1. my @scripts = (
  2.            { file => "script1.pl", args => ["default.xml", "*.xml"] },
  3.            { file => "script2.pl", args => ["data.csv"] },
  4.            # ...
  5.           );
  6.  
  7. foreach (@scripts) {
  8.  local @ARGV = @{$_->{args}};
  9.  eval { require "$_->{file}" };
  10. }


Pas testé, donc SGDG
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-10-2015 à 13:58:42    

gilou a écrit :

A la limite, tu peux faire un truc comme ceci je pense:
 

Code :
  1. my @scripts = (
  2.            { file => "script1.pl", args => ["default.xml", "*.xml"] },
  3.            { file => "script2.pl", args => ["data.csv"] },
  4.            # ...
  5.           );
  6.  
  7. foreach (@scripts) {
  8.  local @ARGV = @{$_->{args}};
  9.  eval { require "$_->{file}" };
  10. }


Pas testé, donc SGDG
 
A+,


 
Merci bien de ta proposition Gilou
ca veut dire au finish j'ai un script du genre  
 

Code :
  1. my @scripts = (
  2.               { file => "script1.pl", args => ["default.xml", "*.xml"] },
  3.               { file => "script2.pl", args => ["data.csv"] },
  4.               { file => "script3.pl", args => ["data.csv"] },
  5.                { file => "script4.pl", args => ["data.csv"] },
  6.                { file => "script5.pl", args => ["data.csv"] },
  7.                { file => "script6.pl", args => ["default.xml", "default.xml"] },
  8.                { file => "script7.pl", args => ["data2.csv", "default.csv"] },  
  9.              );
  10.    
  11. foreach (@scripts) {
  12.    local @ARGV = @{$_->{args}};
  13.   eval { require "$_->{file}" };
  14. }


je me pose la question a savoir que vais je taper dans mon perl commando-line  
si je voudrai par exemple executer le script1.pl
disons si j'appele le script tout en haut main.pl
quand je tape dans perl commando-line : perl main.pl default.xml  *.xml malheureusement il ne fonctionne pas.


Message édité par Henri772 le 01-10-2015 à 14:00:49
Reply

Marsh Posté le 02-10-2015 à 12:47:49    

> perl main.pl default.xml  *.xml malheureusement il ne fonctionne pas.
1) qu'est ce que le default.xml vient faire ici?
2) "il ne fonctionne pas" et moi, avec une description aussi explicite de ce qui se passe, c'est sur que j'ai envie d'en chercher la raison [:cerveau pfff]  
 
A+,
 
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-10-2015 à 18:04:17    

gilou a écrit :

> perl main.pl default.xml  *.xml malheureusement il ne fonctionne pas.
1) qu'est ce que le default.xml vient faire ici?
2) "il ne fonctionne pas" et moi, avec une description aussi explicite de ce qui se passe, c'est sur que j'ai envie d'en chercher la raison [:cerveau pfff]  
 
A+,
 
 


 
Gilou,  
pas de sourci je l'ai resolu, merci bien une fois de plus

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed