PERL - Comparaison de deux valeurs
Hello tout le monde !!
Je fais appel à vous car je ne connais strictement rien en PERL et que je dois modifier un script écrit en perl.
Je vous explique...
Mon but est de récupérer des valeurs via SNMP (ça c'est ok), ces valeurs sont des chiffres, ensuite je la compare à une autre (et c'est là que je merde !).
Ces valeurs sont des numéros de port de switch réseau. J'ai déjà testé avec des Print et je récupérè bien tout ce qu'il faut mais je n'arrive pas à faire ma comparaison.
Je sais que ça doit être un truc tout bête mais je suis un peu perdu dans ce langage :)
Voici le bout de code :
Code:
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
| #=== Get Alias ====
my $result2 = $session->get_table(
-baseoid => $mib{"ifalias"},
);
my $key2;
my $value2;
my @AdminShut;
while (($key2, $value2) = each %{$result2}){
my @split2=split(/\./,$key2);
$key2 = $split2[-1];
if ($value2 =~ /##/ and $key2 < $opt_N){
print($key2); # -- Jaffiche ma valeur
push(@AdminShut,$key2); # -- jexporte dans un tableau
}
}
#=== Get list of switch id in the stack ====
my $result = $session->get_table(
-baseoid => $mib{"ifacestatus"},
);
my $key;
my $value;
my $countdown=0;
my @down;
while (($key, $value) = each %{$result}){
my @split=split(/\./,$key);
$key = $split[-1];
if ($value == 2 and $key != $key2){ # -- je compare key a key2 ----- source du probleme !!
&debug("Interface $key is administratively down\r\n",$value);
$countdown++;
push(@down,$key);
}
} |
Quand je lance mon script j'obtiens le message d'erreur suivant :
Use of uninitialized value in numeric eq (==) at ./bak-check_port_shutdowned.pl line 176.
Use of uninitialized value in numeric eq (==) at ./bak-check_port_shutdowned.pl line 176.
La ligne 176 correspond à :
Code:
if ($value == 2 and $key != $key2){ # -- je compare key a key2 ----- source du probleme !!
Dans $key2 et $key il n'y a que des valeurs numériques normalement.
Dans mon exemple $key2 contient le chiffre 4 et 5 et $key les chiffres allant de 1 à 200.
Je vous remercie pour votre aide !
A+