note LanX <strike>your output must be wrong, only the first call should print "some string".</strike><P><P> EDIT: now I get it, the sub returns the evaluation from the <C>unless</C>-condition in the first line. <P><P> ... WTF ... <P><P> You like obfuscation, don't you?<P><P> <I>&gt; are there any conditions when Perl would NOT print "some string" in last two lines of code</I><P><P> sure if you set $R to anything false ( EDIT:... it will start from new, otherwise it will print the new value.)<P><P> if you wanna avoid that anyone ever unintentionally changes $R, then put the whole closure construct into braces and $R is out of scope for any other code.<P><P> <c> { my $R; sub mySub { unless ($R) { print "CONDITION WORKS\n"; $R = 'some string'; } } } </c> <!-- Node text goes above. Div tags should contain sig only --> <div class="pmsig"><div class="pmsig-708738"> <p>Cheers Rolf </div></div> 1019982 1019982