Ich würde es gleich im Perl-Modus machen, dann spart man sich das do always Attribut, es ist ohne FHEM-Befehle performanter und set_Reading als Perlfunktion ist dafür wie geschaffen. 
da hast Du völlig recht, würde ich auch, da ich nur noch den Perl-Modus nutze. Da Kurt aber nach einer Lösung für sein Problem gesucht hat, was er mit einem fhem-DOIF aufgeschrieben hat, wollte ich das erst mal so machen, damit er damit auch was anfangen kann.
Aber, vielleicht ist es ja noch hilfreich: hier noch die Version in perl-DOIF:
defmod di_licht_perlmode DOIF licht{\
if(["^licht:^illuminance_lux",20] < 10 and get_Reading("l_$device") eq "hell"){\
Log3 "undef",3,"(perlDOIF) Warnung - Licht aus $device";;\
set_Reading("l_$device","dunkel");;\
set_State("cmd_1");;\
} else {\
set_Reading("l_$device","hell");;\
set_State("cmd_2");;\
}\
}\
\
## die beiden Zeilen set_State dienen nur dazu, diese DOIF so aussehen zu lassen, wie das fhem-DOIF.
attr di_licht_perlmode room di_Licht
Gruß
Sany