Perl:message erreur "Bareword "i" n

[Résolu/Fermé]
Signaler
-
 farah -
Bonjour,

J'execute le code ci-dessous avec Perl, et je recois le message: Bareword "i" not allowed while "strict subs" in use at ./test_RTT1.pl line 36. Est-ce que quelqu'un comprend pourquoi??

#!/usr/bin/perl

use strict;
my $j = 0;
my $i;
my @total= 0;
my @nombre = 0;
my @mesures = ("", "RTT", "Jitter", "Delay", "lost", "lost %", "Drop", "000", "Kpkts");
my @moyenne = 0;

while ($j==0){
sleep 5;
my $data = `/usr/sbin/asterisk -rx "iax2 show netstats" | egrep '^IAX2/'`;
print $data;

foreach ($data) {
print "$data\n";
chomp;
my @values = (split / /, $data);
print "@values\n";
print "$values[2]\n";
print "$values[3]\n";if ($values[2] != 1500 & $values[2] != 0){
$total[2] = $total[2] + $values[2];
print " la somme des valeurs du $mesures[2] est de : $total[2]\n";
$nombre[2]++ ;
print "nous avons $nombre[2] de valeurs de $mesures[2]\n";
if ($nombre [2] != 0){
$moyenne [2]= $total [2]/$nombre[2];
print "la moyenne du $mesures[2] est de $moyenne[2]\n";
}
}

for ($i = 3; $i < 10; $i++){
$total[i] = $total[i] + $values[i];
print "la somme des valeurs du $mesures[i] est de $total[i]\n";
$nombre[i]++;
print "nous avons $nombre[i] de valeurs de $mesures[i]\n";
if ($nombre[i] != 0){
$moyenne[i]= $total[i]/$nombre[i];
print "la moyenne du $mesures[i] est de $moyenne[i]\n";
}
}
}

2 réponses

1) Les accolades ne sont pas balancées (pour moi, il manque une fermante)
2) Ah ah, on fait du Perl avec du C, $total[i], en perl pour les variables il faut '$' ou '@' ou '%'; je te laisse choisir le bon.
3) $total[i] = $total[i] + $values[i]; tu peux écrire: $total[i] += $values[i];
4) if ($values[2] != 1500 & $values[2] != 0) bizarre!!! Ne serait-ce pas un '&&', est-tu sûr de la précédence?
Je m'arrête là... pour le moment.
Merci Loupius pour ta réponse. C'est tout bon maintenant..ca marche:)