[gelöst]Perl: Variablen in myUtils

Begonnen von frober, 16 Juni 2021, 19:48:37

Vorheriges Thema - Nächstes Thema

frober

Zu meiner Gewissheit muss ich jetzt mal fragen:

Wird eine Variablen jedes mal neu deklariert, wenn eine Sub aufgerufen wird?

D.h. wenn ich innerhalb der Sub, unter bestimmten Bedingungen, eine Variabel nach der Deklaration verändere, nimmt diese beim nächsten Aufruf der Sub wieder den "alten" Wert an?

Anders ausgedrückt, reicht ein if zum verändern, oder muss ich die Variable mit else wieder zurücksetzen?

Danke und Gruß
Bernd
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Beta-User

Pauschale Antwort: du brauchst vermutlich nichts zurücksetzen.

ABER: es kommt letztlich darauf an, in welchem "lexical context" die Variable steht. Wenn du z.B. $init_done einen Wert zuweist, kann das seltsame Effekte haben, weil diese Variable überall im main-Kontext verfügbar ist...
Eine Variable, die nichts "maskiert" und in einer sub definiert wird (my $var = 'bla';), existiert aber eben nur in diesem lexikalischen Zusammenhang.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

frober

Zitat von: Beta-User am 16 Juni 2021, 20:08:31
Pauschale Antwort: du brauchst vermutlich nichts zurücksetzen.

ABER: es kommt letztlich darauf an, in welchem "lexical context" die Variable steht. Wenn du z.B. $init_done einen Wert zuweist, kann das seltsame Effekte haben, weil diese Variable überall im main-Kontext verfügbar ist...
Eine Variable, die nichts "maskiert" und in einer sub definiert wird (my $var = 'bla';), existiert aber eben nur in diesem lexikalischen Zusammenhang.

Danke für die schnelle Antwort.
Mir ging es eigentlich nur um eigene Variablen innerhalb der Sub.

Beim darüber nachdenken, ist mir das selbst klar geworden. Sonst könnte ich ja keine geänderte Istwerte eines Devices einlesen.

Grüße Bernd
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...