Wunderschönen Guten Morgen,
ich hab wieder mal ein kleiner Perl-Problem.
in einer ECMD.classdef habe ich folgendes:
set NamedColor params nam
set NamedColor cmd {my %colors=('Rot' => 'FF0000','Hellrot' => 'FF1400','Hellrot1' => 'FF2800');;my $arg=$colors{%nam};;ChromoColor(AttrVal("%NAME","Chromo_Adr",'000000'),hex(substr($arg,0,2)),hex(substr($arg,2,2)),hex(substr($arg,4,2)),255)}
set cmd params comnd
set cmd cmd {my %commands=('Aus' => '0','Speichern&Aus' => '1','Ein' => '2');;my $d=$commands{%comnd};;if (!defined($d)){$d=%comnd};;ChromoCommand(AttrVal("%NAME","Chromo_Adr",'000000'),$d)}
Der NamedColor-Teil funktioniert (wird "Rot" übergeben, sucht sich perl aus dem Array das "FF0000" raus)
Der zweite Teil klappt leider nicht. Wird "Aus" übergeben, bekomme ich im Log folgende Meldung:
2014.02.27 08:10:23 5: Chromoflex sending Bareword "Aus" not allowed while "strict subs" in use at (eval 60) line 1.
Wer kann mir da bitte mal auf die Sprünge helfen?
Thx, Ici
was passiert, wenn Du "Ein" übergibst?
2014.02.27 08:33:50 5: Chromoflex sending Bareword "Ein" not allowed while "strict subs" in use at (eval 561) line 1.
Hast Du mal ohne das if(!defined...) getestet? Für mich sieht das so aus, als ob genau an der Stelle der falsche Wert nach $d übertragen wird.