Bonjour,

Je débute en Perl, et je voulais faire un petit script pour me générer un fichier.
J'ai l'erreur suivante à l'execution : Use of uninitialized value $valhier in string at line (voir ligne correspondante en gras)

Voici le code :
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
my $i = 0;
my $tab_auj;
my $tab_hier;
my $time;
my $val;
my $valhier;
my $fileCSV;
my @tab_auj= ();
my @tab_hier= ();
my @result= ();


# Run the main loop
&genere;

# ========== generer fichier xml pour datas temperature THGN800 ===============
sub genere {
	
# Requete pour les résultats du jour
	my $requete = "SELECT timestamp_mesure, valeur_mesure FROM releves WHERE id_capteur='20' AND type_mesure='temp' AND timestamp_mesure BETWEEN DATE_ADD(NOW(),INTERVAL -25 HOUR) AND NOW() ORDER BY timestamp_mesure DESC";
	my $sth = $dbh->prepare($requete);
	$sth->execute() or die "Echec Requete $requete : $DBI::errstr\n";
	while (my @result = $sth->fetchrow_array()) {
		$tab_auj[$i] = { timestamp_mesure => $result[0], valeur_mesure => $result[1] };
		$i ++;
	}
	$sth->finish();
	
	
# Requete pour les résultats de la veille

	$requete = "SELECT timestamp_mesure, valeur_mesure FROM releves WHERE id_capteur='20' AND type_mesure='temp' AND timestamp_mesure BETWEEN DATE_ADD(NOW(),INTERVAL -50 HOUR) AND DATE_ADD(NOW(),INTERVAL -25 HOUR) ORDER BY timestamp_mesure DESC";
	$sth = $dbh->prepare($requete);
	$sth->execute() or die "Echec Requete $requete : $DBI::errstr\n";
	while (my @result = $sth->fetchrow_array()) {
		$tab_hier[$i] = { timestamp_mesure => $result[0], valeur_mesure => $result[1] };
		$i ++;
	}
	$sth->finish();
	
	use FileHandle;

	my $fileXML="/volume1/web/meteo/graph_THGN800_1_temp/datas.XML";
	open (F, ">$fileXML");
	print F "chart_data: ";#pour écrire dans le fichier


	for $i (0 .. ($#tab_auj)) {
			$time = $tab_auj[$i]->{timestamp_mesure};
			$val = $tab_auj[$i]->{valeur_mesure};
			$valhier = $tab_hier[$i]->{valeur_mesure};
			print F "$time";
			print F ";";
			print F "$val";
			print F ";";
			print F "$valhier";
			print F ";";
	}
	
	print F ",\n";

	close F;#fermeture du fichier.

print "Fin du script\n\n";
}
J'ai déclaré et initialisé mes variables. J'ai beau chercher, je ne trouve pas.
Merci pour votre aide.
Mikael