Bonjour,
Voila, je suis débutant en PERL. Je viens de créer mon premier petit robot qui se connecte à une base de donnée pour faire des tests ping sur plusieurs serveurs.
Je souhaiterais me faire un package "ConfigAppli" pour que toutes les variables de configurations soient modifiable.
Le problème c'est que quand je passe en parametre ma connexion à la base de données, impossible d'executer ...
Ma question est simple : Il y a t il un moyen pour se connecter une seul fois a la base de données et pouvoir acceder au connecteur de partout en PERL ? Si non, qu'elle est la méthode la plus simple ?
Actuellement quand j'execute le script, voici le message d'erreur :
Mon script principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Can't use string ("1") as a HASH ref while "strict refs" in use at /etc/########/Class/ConfigAppli.pm line 25.
Et voici ma class :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/usr/bin/perl use warnings; use DBI; use Net::Ping; use MIME::Lite; use Data::Dumper; use lib '/etc/########/Class'; use ConfigAppli; my $database = "#############"; my $hostname = "#############"; my $login = "#############"; my $mdp = "#############"; my $dbh = DBI->connect( "DBI:mysql:database=$database;host=$hostname", $login, $mdp ) or die "Echec connexion"; my $Config = ConfigAppli->new( $dbh ); $Config->load(); print Dumper $Config;
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 package ConfigAppli; use warnings; use strict; sub new { my ( $classe, $dbh ) = @_; my $this = { "dbh" => $dbh }; $this->{interval} = 1; # Temps d'attente (en minute) $this->{avertNeg} = 3; # Nombre de test ping pour déclencher un avertissement $this->{maxNeg} = 8; # Nombre de test ping pour déclencher une alerte $this->{To} = ""; # Mail pour l'envoie des alertes $this->{Cc} = ""; # Personne en copie des mails d'alertes bless( $this, $classe ); return $this; } sub load { my $this = @_; my $prep = $this->{dbh}->prepare("SELECT * FROM configurationAppli;") or die $this->{dbh}->errstr; $prep->execute() or die "Echec requête\n"; my $Config = $prep->fetchrow_hashref ; print $Config->{To} ; print "\n" ; print $Config->{Cc} ; print "\n" ; $this->{interval} = $Config->{interval}; $this->{avertNeg} = $Config->{avertNeg}; $this->{maxNeg} = $Config->{maxNeg}; $this->{To} = $Config->{To}; $this->{Cc} = $Config->{Cc}; $prep->finish(); } sub getInterval { my $this = shift; return $this->{interval} ; } sub getAvertNeg { my $this = shift; return $this->{avertNeg} ; } sub getAlerteNeg { my $this = shift; return $this->{maxNeg} ; } sub getMailTo { my $this = shift; return $this->{To} ; } sub getMailCc { my $this = shift; return $this->{Cc} ; } 1;
Partager