Message d'erreur Perl

[Résolu/Fermé]
Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Bonjour,

J'execute le code suivant en PERL , mais je recois le message d'erreur:
Bareword "i" not allowed while "strict subs" in use at ./test_RTT1.pl line 36.
Bareword "i" not allowed while "strict subs" in use at ./test_RTT1.pl line 36.
Bareword "i" not allowed while "strict subs" in use at ./test_RTT1.pl line 36.


Le code:

#!/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

c'est bon j'ai trouvé l'erreur c'est un oubli!!
Le $ devant le i manquait dans la boucle for:

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";
}
}
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 560
Salut,

my $data = `/usr/sbin/asterisk -rx "iax2 show netstats" | egrep '^IAX2/'`;
print $data;

foreach ($data) {

$date c'est une chaîne de caractères qui contient la sortie de la commande /usr/bin/asterisk .....

foreach est totalement inutile.