CH1CC0
27-04-2009, 22:20
Ciao a tutti, ho un problema con la gestione delle variabili in uno script PERL.
Prendo un valore da una sessione telnet (con net::telnet),
lo assegno ad una variabile (lettura),
a questo punto lo script verifica "lettura",
assegna uno stato a STDOUT e lo stampa.
La cosa strana è che non riesco a ricevere il valore usando una variabile scalare (se stampo $lettura mi restituisce sempre '1').
Se invece uso una variabile vettoriale, il valore viene preso correttamente (se stampo @lettura[0] mi restituisce il valore giusto :confused: )
A questo punto, il semplice controllo di "maggiore/minore/uguale" non funziona più e STDOUT viene falsato :muro:
Questa è la subroutine che fa il controllo:
(NOTA: $cmd, $crit e $warn vengono definite prime)
sub runcmd {
@lettura=$telnet->cmd(
String => "$cmd",
Prompt => '/Bye/',
);
if (@lettura <= $crit) {
$STDOUT='2';
} else { if (@lettura <= $warn && $lettura > $crit) {
$STDOUT='1';
} else { if (@lettura > $warn) {
$STDOUT='0';
} else { $STDERR='Output non interpretabile';
}
}
}
print "$STDOUT\n";
Please help me :help:
Grazie
Prendo un valore da una sessione telnet (con net::telnet),
lo assegno ad una variabile (lettura),
a questo punto lo script verifica "lettura",
assegna uno stato a STDOUT e lo stampa.
La cosa strana è che non riesco a ricevere il valore usando una variabile scalare (se stampo $lettura mi restituisce sempre '1').
Se invece uso una variabile vettoriale, il valore viene preso correttamente (se stampo @lettura[0] mi restituisce il valore giusto :confused: )
A questo punto, il semplice controllo di "maggiore/minore/uguale" non funziona più e STDOUT viene falsato :muro:
Questa è la subroutine che fa il controllo:
(NOTA: $cmd, $crit e $warn vengono definite prime)
sub runcmd {
@lettura=$telnet->cmd(
String => "$cmd",
Prompt => '/Bye/',
);
if (@lettura <= $crit) {
$STDOUT='2';
} else { if (@lettura <= $warn && $lettura > $crit) {
$STDOUT='1';
} else { if (@lettura > $warn) {
$STDOUT='0';
} else { $STDERR='Output non interpretabile';
}
}
}
print "$STDOUT\n";
Please help me :help:
Grazie