pb use et require

pb use et require - Perl - Programmation

Marsh Posté le 18-05-2004 à 16:08:13    

Salut à tous.
J'ai un pb:
Voici mon code:

Code :
  1. #!/bin/perl
  2. require "fonctions_divers.pl";
  3. use Mesure;
  4. $date = recup_date();
  5. print ("$date\n" );
  6. my $mesure = Mesure->new("switch-G0-1" );
  7. @tabcharge = $mesure->charge_cpu("/groupware/Projets/Stages/GSTAreseau/projet.ori/fin/rapport_mesures/","/usr/opt/local/bin/snmpwalk","$date" );
  8. print("@tabcharge\n" );


 
Dans fonctions_divers.pl se trouve la fonction recup_date
Le pb est que sa ne marche pas.
il me marque: Undefined subroutine &main::recup_date called at essai.pl line 7.
Quand je j'enleve use Mesure la il arrive bien à executer recup_date mais pas Mesure->.... (evident)
 
Je ne c pas quoi faire
Quelqu'un a une idée?

Reply

Marsh Posté le 18-05-2004 à 16:08:13   

Reply

Marsh Posté le 18-05-2004 à 16:23:06    

les bibilotheques (fichier .pl que tu require) c'est pas vraiment top...
 
vaut mieux faire de vrais module .pm!
 
le probleme vient surement du fait que tu require le meme fichier dans "Mesure"
 
transforme ta bibliotheque en un vrai module et tu n'aura plus à te soucier de ca!

Reply

Marsh Posté le 18-05-2004 à 16:28:27    

ok merci je vais essayer

Reply

Marsh Posté le 19-05-2004 à 15:57:54    

J'ai a présent un second pb que voici:
J'ai un script perl que je dois effectuer périodiquement,
pour ce faire j'utilise le cron.
Voici le script qui est executé:
 

Code :
  1. #!/bin/perl
  2. $ch_heure = "/groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/heure";
  3. chdir ($ch_heure);
  4. #recuperation des mesures programmees
  5. system("ls *.pl>liste_mesures.txt" );
  6. $heure2=$ch_heure."liste_mesures.txt";
  7. open(MES,"$heure2" ) || die "Impossible d'ouvrir liste_mesures.txt";
  8. while(<MES> )
  9. {
  10. #execution des scripts programmes
  11. system("$_" );
  12. }
  13. close MES;
  14. system("rm $heure2" );


Mais voila que j'ai un pb avec le repertoire $ch_heure en effet il me dit (lors de l'execution automatique) not found et du coup j'ai une erreur dans mon chdir. Or quand l'execute a la main le script marche bien.Je voulais savoir s'il y a vais un astuce. Merci.

Reply

Marsh Posté le 19-05-2004 à 23:46:22    

ben c'est juste un probleme de repertoire courant: kand tu le lance en cron le repertoire courant n'est pas le meme que kand tu le lance à la main...
 
essai avec un chemin absolu pour voir

Reply

Marsh Posté le 19-05-2004 à 23:46:42    

et essai d'ouvrire un nouveau topic pour chaque nouveau probleme

Reply

Marsh Posté le 20-05-2004 à 00:07:10    

avec un sondage pourri, non merci

Reply

Marsh Posté le 20-05-2004 à 00:17:06    

sinon utilise pas des commandes systèmes quand ya des équivalent sous perl
 
rm -> unlink
ls -> module File::Find


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 24-05-2004 à 10:41:43    

J'ai mis le chemin absolu et tjs pareil.

Reply

Marsh Posté le 24-05-2004 à 15:27:45    

affiche le repertoire courant dans ton script pour voir d'ou ca le lance

Reply

Marsh Posté le 24-05-2004 à 15:27:45   

Reply

Marsh Posté le 24-05-2004 à 15:47:56    

le Voici:
/groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/heure/mesures_prog
 et moi je voudrai aller dans :
/groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/essai

Reply

Marsh Posté le 24-05-2004 à 16:56:07    

En faite c bizarre car quand je veut ouvrir un fichier dans ce script il me marque erreur de syntax. Pareil qd je veut utiliser une librairie(use).

Reply

Marsh Posté le 24-05-2004 à 16:58:22    

et c'est quoi l'erreur de syntaxe?


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 25-05-2004 à 09:20:07    


voici les erreurs qu'il me marque  
 
/groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/heure/mesures
_prog/mesure.pl: use: not found
 /groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/heure/mesures
_prog/mesure.pl: syntax error at line 4: `open' unexpected
 
Alors que je ne fait pas d'erreur de syntax
voici la syntax:
 

Code :
  1. use Tk;
  2. open (ECRIRE,"> /groupware/Projets/Stages/GSTAreseau/projet.ori/fin/script/essai/fichier.txt" ) || die "Erreur de creation de fichier.txt" ;
  3. require "chemins.pl";
  4. chdir ("$ch_quo" );
  5. #recuperation des mesures programmees
  6. system("ls *.pl>liste_mesures.txt" );
  7. $quotidien2=$ch_quo."liste_mesures.txt";
  8. open(MES,$quotidien2) || die "Impossible d'ouvrir liste_mesures.txt";
  9. while(<MES> )
  10. {
  11. #execution des scripts programmes
  12. system("$_" );
  13. }
  14. close MES;
  15. system("rm $quotidien2" );

Reply

Marsh Posté le 25-05-2004 à 11:50:07    

c'est ton script au complet ca?
 
et tu l'exécuté comment? en lancant simplement tonscript.pl ou en faisant perl tonscript.pl


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 25-05-2004 à 12:03:59    

je l'execute dans le cron en lancant simplement monscrip.pl

Reply

Marsh Posté le 25-05-2004 à 12:09:46    

bin t'a pas de shebang en haut de ton script, alors il peut pas savoir avec quoi le lancer lui
 
#!/usr/bin/perl
 
selon où se trouve ton perl


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 25-05-2004 à 12:22:18    

si si j'ai #!/bin/perl
excuse c mon copier collé qui a merdé

Reply

Marsh Posté le 26-05-2004 à 10:44:15    

Allo !!!!  personne pour m'aider?

Reply

Marsh Posté le 26-05-2004 à 11:38:46    

visiblement vu les erreurs qu'il te sort il a pas compris que c'etait du perl...
 
lance le explicitement avec perl et le nom du script en parametre

Reply

Sujets relatifs:

Leave a Replay

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