hash-Hilfe

Begonnen von UliM, 03 März 2013, 21:33:17

Vorheriges Thema - Nächstes Thema

UliM

Hi,
auch wenn solche Fragen hier nicht so gern gesehen sind - ich such mir nen Affen und find's auch nach 2h googeln nicht.

Warum geht das da nicht:

  my %aut = ();
  $aut{lang}              = "EN;EN DE;DE";
  $aut{mod}{EN}           = "define;Define edit;Edit";
  $aut{mod}{EN}{help}     = "Select if you wish to create or update a definition.";
  $aut{type}{EN}          = "at;time-driven notify;event-driven";


Meldung:
Can't use string ("define;Define edit;Edit") as a HASH ref while "strict refs" in use

In FHEMWEB & Co wird dieses Konstrukt allenthalben verwendet - warum wird die Schreibweise hier als HASH-ref interpretiert statt als Wert?
Wie wär's richtig?

Vielen Dank schon im Voraus für eure Tipps,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

rudolfkoenig

Hallo Uli,

>  $aut{mod}{EN}           = "define;Define edit;Edit";
>  $aut{mod}{EN}{help}     = "Select if you wish to create or update a definition.";

Mit der ersten Zeile legst Du fest, dass $aut{mod}{EN} ein String ist. Bei der Zweiten nimmst Du an, dass $aut{mod}{EN} ein Hash ist, und versuchst was reinzuschreiben. Das ist equivalent mit:

"define;Define edit;Edit"{help} = "Select...";

Das geht so nicht (ein String it kein Hash oder Hash-Pointer, siehe Fehlermeldung), und sollte eher so geschrieben werden:

$aut{mod}{EN}{cmd}      = "define;Define edit;Edit";
$aut{mod}{EN}{help}     = "Select if you wish to create or update a definition.";

Gruss,
  Rudi

UliM

Hallo Rudi,

Das ist so einfach wenn man's durchschaut bzw. erklärt bekommt...

vielen Dank für die Erklärung!

LG, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.