Ich hab mich weiter mit der Meldung
PERL WARNING: Argument "unknown" isn't numeric in numeric ne (!=)
beschäftigt, ich bin jetzt der Meinung die kommt nicht weil der Ersatzwert irgendwann mal in der Schleife genommen wird, sondern (drücks in meinen Worten aus, bin ja kein Programmierer) Perl selbst ist, aufgrund dessen das zum Vergleich != verwendet wird, in der Lage festzustellen das der angegebene Ersatzwert kein numerischer Wert ist und warnt nur das im Falle das er zum Zuge kommt nicht korrekt ist.
Nimmt man bspw. ne (mit Ersatzwert unknown,ja ich weiß ist nicht korrekt, nur zum Test) kommt die Meldung nicht.
Also sollte eigentlich alles so passen:
{my $c;my $h = {sx => 'speed',ix => 'intensity',fp => 'palette',fx => 'effect',ps => 'preset'};for (keys %{$h}) {if ($EVENT){next if $EVENT !~ m,(?<=<$_>)([\d]+)(?=<\/$_>),;$c->{$h->{$_}}=$1 if $1 ne ReadingsNum($NAME,$h->{$_},0);}};return $c;}