FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: UliM am 03 März 2013, 21:33:17

Titel: hash-Hilfe
Beitrag von: UliM am 03 März 2013, 21:33:17
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
Titel: Aw: hash-Hilfe
Beitrag von: rudolfkoenig am 04 März 2013, 11:59:48
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
Titel: Aw: hash-Hilfe
Beitrag von: UliM am 04 März 2013, 16:12:08
Hallo Rudi,

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

vielen Dank für die Erklärung!

LG, Uli