Problème d'ouverture de fichiers au format .RRD ???

Problème d'ouverture de fichiers au format .RRD ??? - Perl - Programmation

Marsh Posté le 12-05-2005 à 15:13:52    

Bonjour tout le monde!!!
 
J'ai un petit problème à vous soumettre, Je voudrais ouvrir un fichiers au format .rrd (round robin data) pour ensuite retranscrire les informations qui sont à l'intérieur dans un autre fichier (.log par exemple).
J'ai déjà fait un petit programme en Perl pour récupérer le fichier .rrd mais je ne réussit pas à l'ouvrir!!!
ca fait depuis lundi que je suis la dessus et la franchement je planche!!! :??:  
 
quelqu'un peut-il m'aider svp?
 :sweat:

Reply

Marsh Posté le 12-05-2005 à 15:13:52   

Reply

Marsh Posté le 12-05-2005 à 15:35:51    

Citation :

J'ai déjà fait un petit programme en Perl pour récupérer le fichier .rrd mais je ne réussit pas à l'ouvrir!!!


 
 
Je pense que cette indication nous permet de te dire qu'il manque un point-virgule à la ligne 39.
 
 
... non sérieusement, sans info sur l'erreur et le morceau de code qui va avec, on peut rien faire.

Reply

Marsh Posté le 12-05-2005 à 16:19:50    

En fait mon code c'est juste deux lignes qui vont chercher le fichiers. ca ca marche bien.
Par contre j'ai essayer plein de fois de l'ouvrir mais ca marche pas. j'ai fait sa :  
 
#! C:\Perl\bin\perl.exe -w
use strict;
use RRDs;
rrd fetch "D:\\perl\\diadc01_hdd_total_215.rrd";

 
D'après ce que j'ai pu voir sur le net car je débute en perl. Et iil me dit ne erreur :  
 
"Can't locate object method "rrd" via package "fetch" (perhaps you forgot to load "fetch"?) at prog3.pl line 5."
 
Au fait j'ai pas oublier de point virgule ligne 39. :D

Reply

Marsh Posté le 12-05-2005 à 17:26:38    

je connais pas le module RRDs, mais ce que je peux te dire c'est que ta syntaxe doit pas etre bonne.
t'es pas dans un shell.
 
sinon regarde du coté de ce module:
http://search.cpan.org/~rsoliv/rrdpoller-1.5.0/
 
c'est un wrapper pour RRDs

Reply

Marsh Posté le 13-05-2005 à 09:25:42    

merci pour le lien! J'ai regarder ca a l'air d'être ce que je cherche.
 
Le problème c que j'ai toujours tout pleins d'erreurs. Mon morceaux de code c'est celui la (t'arrache pas les cheveux, tu va voir c'est tout con comme programme!!! ;) )
 
#! C:\Perl\bin\perl.exe -w
use strict;
use RRDs;
RRD::Query;
my $rq = new RRD::Query("D:\\perl\\diadc01_hdd_total_215.rrd" );
@datasources = list();

 
Et quand j'utilise ca pour ouvrir mon ficier .RRD il me met ca en erreur:  
 
Global symbol "@datasources" requires explicit package name at prog3.pl line 8.
Bareword "RRD::Query" not allowed while "strict subs" in use at prog3.pl line 5.
Execution of prog3.pl aborted due to compilation errors.

 
C'est du à quoi ces erreurs???Je suis perdu là!
 

Reply

Marsh Posté le 13-05-2005 à 09:35:31    

houla
ton probleme c'est surtout la syntaxe Perl on dirait!
prend toi un bon tutorial et consacre y qq jours


Message édité par pospos le 13-05-2005 à 09:36:00
Reply

Marsh Posté le 13-05-2005 à 10:08:57    

use strict = il faut déclarer les variables avant de les utiliser.
 
Tout comme tu déclares $rq avant de l'initialiser (avec my $rq...), il faut utiliser my avec @datasources.
 
L'erreur de RRD::Query, c'est probablement un problème de syntaxe aussi.

Reply

Marsh Posté le 13-05-2005 à 10:16:23    

oki merci pour les indications. je vais voir pour la syntaxe.

Reply

Marsh Posté le 13-05-2005 à 10:22:40    

Est-ce-que vous savez a quoi peut correspondre cette erreur???
 
Bareword "RRD::Query" not allowed while "strict subs" in use at prog3.pl line 6.

Reply

Marsh Posté le 13-05-2005 à 12:45:48    

Non c'est bon j'ai réussi à enlever l'erreur. S'était une faute de syntaxe et e, plus je m'était planter de librairie!! :D  
 
J'ai donc modifier mon code pour passer les valeurs de mon fichier .RRD dans un tableau hash.
Voici donc le code:  
 
#! C:\Perl\bin\perl.exe -w
use strict;
use RRDs;
my $hash ="";
my $key="";
$hash = RRDs::fetch ("D:\\perl\\diadc01_hdd_total_215.rrd", "AVERAGE" );
foreach my $key (keys %$hash)
{
print "$key = $$hash{$key}\n"  ;
}

 
Et maintenant il me dit une erreur que je n'avais pas encore eu :  
 
Use of inherited AUTOLOAD for non-method RRDs::fetch() is deprecated at prog3.pl line 6.
Can't locate auto/RRDs/fetch.al in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at prog3.pl line 6

 

Reply

Marsh Posté le 13-05-2005 à 12:45:48   

Reply

Marsh Posté le 13-05-2005 à 12:51:32    

Ta lib a pas l'air de connaître fetch().

Reply

Marsh Posté le 13-05-2005 à 14:08:03    

comment faire pour qu'il la reconnaisse?

Reply

Marsh Posté le 13-05-2005 à 14:13:03    

Apprend la syntaxe Perl, sinon tu ne va pas arreter de butter sur des erreurs de syntaxe

Reply

Marsh Posté le 13-05-2005 à 14:18:49    

Je suis vaguement allé voir dans le cpan, et apparemment list() et fetch() sont dans le package RRD::Query.
 
Si j'ai bien capté, quand tu télécharges la bibliothèque RRD, tu as un Query.pm dedans, c'est ça qu'il faut utiliser (use Query).
 
Avec Query.pm mis dans @INC (dans ton cas, soit c:\perl\lib, soit c:\perl\site\lib)

Reply

Marsh Posté le 13-05-2005 à 14:19:30    

pospos a écrit :

Apprend la syntaxe Perl, sinon tu ne va pas arreter de butter sur des erreurs de syntaxe


 
Oui, aussi. :/

Reply

Marsh Posté le 13-05-2005 à 14:34:27    

ouai mais le mec a fait sa doc comme un manche sur CPAN! c'est de la faute de l'auteur du module :
 
list et fetch c'est des methodes, pas des fonction comme al doc semble l'indiquer
donc faut faire un truc genre
my $rq = RRD::Query->new(...);
 
et esnuite
 
$rq->fetch(...)
 
ou $rq->list(...)


Message édité par pospos le 13-05-2005 à 14:35:17
Reply

Sujets relatifs:

Leave a Replay

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