Perlnachhilfe: Prototype Fehler in Subroutine

Begonnen von blofield, 03 September 2015, 15:52:30

Vorheriges Thema - Nächstes Thema

blofield

Hallo Forum,

ich bin seit 2 Jahren begeisterter FHEM User. Meine Installation ist recht komplex aber funktioniert tadellos. Bis ich meine erste Subroutine für ein MilightDevice geschrieben habe, welches mir Probleme verursacht, weil ich mangels Perl Erfahrung den Fehler nicht finden kann.

Problem:
2015.09.03 14:49:47 1: PERL WARNING: Prototype mismatch: sub main::sleep (;@) vs (@) at ./FHEM/99_myUtils.pm line 102.
Die Routine funktioniert aber!? Jedoch bringt sie scheinbar jedes xte mal FHEM zum Stillstand, das letzte was dann im Log steht ist "GLOBAL sleepwell defined".

Subroutine in 99_myUtils.pm :
sub sleep(@) {
my @dev=@_;
{ fhem("set @dev on; set @dev rgb FFFFFF; define sleepwell at +00:30:00 {sleepwell ('@dev') if (Value('@dev') ne 'off')}")}
}

sub sleepwell(@) {
my @dev=@_;
my @color=("FFFF54","E86602","D40000","C2046F","9D02B5","4F00A8","000480","330033");
my $i=0;

foreach (@color) { if ($i == 0)
{ fhem("set @dev rgb FFFFFF; define sleepOff at +00:32:00 set @dev off 15"); }
else
{ fhem("set @dev rgb $color[$i] 120 q"); }
$i++;}
}


Welcher Perlmeister kann mich erleuchten...

Danke.
blofield

Wzut

der Name sleep für das eigene Kind war keine gute Idee , mach mal ein sub schlafen daraus :)
Hintergrund : Highlander Prinzip -> "es kann nur Einen geben" :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

blofield

Gelöst:

es kann nur Einen geben!


Danke!
blofield.