passer une référence à un autre script.

passer une référence à un autre script. - Perl - Programmation

Marsh Posté le 30-05-2007 à 14:37:50    

Bonjour à tous.  :hello:  
 
Sorry de ma question mais je ne parviens pas à réaliser ce que je voudrais ou du moins je ne comprends rien ;-).
 
Je dispose d'un script qui appelle un autre script et j'aimerais lui faire passer une référence. Je m'explique, le premier script appelle le deuxième pour chaque éléments d'un réseau. Ce deuxième script recueille alors des infos qu'il stocke dans une base de données mysql. Afin d'éviter que le deuxième script ne recrée une connexion à la BD pour chaque élément, j'aimerais initialiser la connexion dans le premier script et passer au deuxième la structure de données de cette connexion. Cependant je n'y parviens pas. Auriez-vous une petite idée de comment je pourrais faire ça ?
 
Je vous joints les deux bouts de compte :
 
 
Premier script
-------------

Code :
  1. $host="localhost";
  2. $database="telephonie";
  3. $user="";
  4. $password="";
  5. $dbh_tel = Mysql->connect($host, $database, $user, $password);
  6. for(my $ii=0; $ii<$nblines; $ii++) {
  7.  $xx = 1;
  8.  @arr = $sth->fetchrow;
  9.  $ip = $arr[0];
  10.  $nom_switch = $arr[1];
  11.  # $ref_db = \$dbh_tel; ----> ????
  12.  system('/usr/local/bin/routeur/scriptinterf/scriptInterf1sw.pl $ip $nom_switch $ref_db &');
  13.                 #C'est ici que je n'arrive pas à passer la référence : si je mets des " dans la commande system alors il me prend la référence avec des parenthèses et j'ai des erreurs de compilations.
  14. }


 
 
Deuxième script
---------------
 

Code :
  1. $ip = $ARGV[0];
  2. $nom_switch = $ARGV[1];
  3. $dbh_tel = \$ARGV[2];     #On passe la BD en arg pour ne pas faire plein de connexions en meme temps.
  4. print "\n\n\n **** $dbh_tel\n\n\n";
  5. $stmt = "replace into `telephones` (`MAC`,`NUM_TEL`,`NOM`,`IP_TEL`,`ETAT`,`SWITCH`,`INTERFACE`,`DATE_MAJ`) values ('$mac','$numero','$nom_user','$iptel','$state','$nom_switch','$interf','$now');";
  6.     #print "$stmt\n";
  7.     $sth_tel = $dbh_tel->query($stmt);


 
je vous remercie d'avance pour votre aide
 
 :jap:


Message édité par Flitz le 30-05-2007 à 14:39:34
Reply

Marsh Posté le 30-05-2007 à 14:37:50   

Reply

Marsh Posté le 31-05-2007 à 09:26:51    

Bonjour,
 
l'idéal serait que tu transformes ton second script en package (.pm au lieu de .pl). Tu fonctionnalises tout son code et voilà. Si c'est faisable sans trop de contraintes, bien entendu.
 
Sinon, tu pourrais tenter une alternative : écrire dans un fichier temporaire les variables que le second script doit récupérer. Ensuite, ton second script n'a plus qu'à lire ce fichier temporaire et faire son taf.
 
Ton appel system( ) ne me semble pas correct avec l'emploi de ' ' car tes variables ne sont pas extrapolées. Par exemple, tu crois fournir au 2è script le contenu de la variable $nom_switch alors qu'en fin de compte, tu lui envoie textuellement '$nom_switch'.


Message édité par Aricoh le 31-05-2007 à 09:28:58

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Sujets relatifs:

Leave a Replay

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