Thread If / elsif / else Block weigert sich zu tun was er soll
(7 answers)
Opened by Errorsmith at 2012-07-21 15:18
Hi!
Ich schreibe ein Skript das Statistiken aus meinem DSL Modem auslesen und (später dann) via rrd-tool speichern soll. Zur Zeit schreibe ich den zentralen Block, der auf Anfrage hin die Parameter zurückgibt. Als Argument bekommt die Subroutine den gewünschten Parameter, ermittelt die Daten vom Modem (oder bentutzt bereits gespeicherte Werte) und gibt sie zurück. Irgendwie haut die Auswahl der Parameter jedoch nicht hin. Mein Code dafür sieht so aus: Code: (dl
)
1 # global variables Der Aufruf im Programm erfolgt so: Code: (dl
)
1 my ($snr_dn,$snr_up) = dsl_cache_basicstats("snr"); Dinge die ich nicht mit hier im Post habe: sub "debug" - prüft ob globale Variable "debug == 1" und gibt ggf ihre Argumente mit "print" aus sub "comm_open" - baut eine Verbindung zum DSL Modem auf und gibt ein Handle zurück (nutzt Net::Telnet) sub "comm_close" - beendet die Telnet Verbindung wieder subs rwhite, lwhite - entfernen leerzeichen aus strings globale Variable $commstatus bedeutet: 0->Keine Verbindung, 1-> Verbindung offen, 2->login, 3-> authientifizierung, 9->Verbindung steht und ist für Befehle bereit Leider gibt das meine Routine nur die Werte für SNR zurück, egal mit welchem Argument ich sie aufrufe. Selbst mit unsinnigem Parameter - bei denen ich die entsprechende Meldung erhalten muesste, liefert mir die Routine nur die snr Werte zurueck, er landet auch jedesmal beim Auswahlverfahren bei "snr". Ich benutze strict und warnings und bin sicher das das irgendwas dummes, einfaches ist, aber ich komm einfach nicht drauf... Ich würde mich über einen Stupser in die richtige Richtung freuen, da sitz ich nun schon seit gestern dran und komm nicht weiter... Grüße, Errorsmith modedit Editiert von pq: more-tag um script hinzugefügt Last edited: 2012-07-21 16:22:27 +0200 (CEST) |