FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: GaiusMarius am 09 November 2022, 18:52:43

Titel: [gelöst] Perl -> 99_myUtils.pm -> Variablen exportieren -> our
Beitrag von: GaiusMarius am 09 November 2022, 18:52:43
Hallo allerseits, meine Perl-Kenntnisse reichen nicht aus, um mir meine Frage selbst beantworten zu können:

Habe ich in der 99_myUtils.pm zu exportierende, also dann z. B. in den Devices zur Verfügung stehende, Variablen richtig/schön programmiert?

99_myUtils.pm:package main;
use strict;
use warnings;
sub myUtils_Initialize($$) {my ($hash) = @_;}

our $ichBinDieVariableUmDieEsGeht = 'Inhalt';


In dem Device steht dann z.B.:
attr DEVICE stateFormat {$main::ichBinDieVariableUmDieEsGeht}

Nach etlichen gescheiterten Versuchen habe ich meinen Wunsch immerhin umgesetzt bekommen.  8)
In der (über Google zu findenden) Doku wird vom Gebrauch von our eher abgeraten; mMn. aber aus Perl-Kompatibilitätsgründen...
Titel: Antw:Perl -> 99_myUtils.pm -> Variablen exportieren -> our
Beitrag von: betateilchen am 09 November 2022, 20:39:55
Warum schreibst Du Deine benötigten Daten nicht einfach in den %data Hash, der in FHEM systemweit zur Verfügung steht und genau für solche Zwecke vorgesehen ist?

$data{ichBinDieVariableUmDieEsGeht} = 'Inhalt';

Dann kannst Du in Deinem gesamten FHEM mit dem "Namen"

$data{ichBinDieVariableUmDieEsGeht}

darauf zugreifen.


--
Titel: Antw:Perl -> 99_myUtils.pm -> Variablen exportieren -> our
Beitrag von: GaiusMarius am 10 November 2022, 09:48:27
Weil ich das bis eben nicht wusste!  8)
Ich probiere $data() gleich mal aus...
Titel: Antw:Perl -> 99_myUtils.pm -> Variablen exportieren -> our
Beitrag von: betateilchen am 10 November 2022, 14:15:34
Zitat von: th0masrad am 10 November 2022, 09:48:27
Ich probiere $data() gleich mal aus...

Das wird nicht funktionieren, du musst schon die Klammern verwenden, die ich in meinem Beispiel verwendet habe.

Titel: Antw:[gelöst] Perl -> 99_myUtils.pm -> Variablen exportieren -> our
Beitrag von: GaiusMarius am 11 November 2022, 14:19:47
Sorry, falsch wiederholt; implementiert habe ich {} und alles funktioniert tadellos.