http://www.perlmonks.org?node_id=333321


in reply to Closure question

I have run into this problem before and it has to do with the fact that the statement "my @r=..." hasn't been executed yet. Perl lets you use the @r under strict because your definition for "doesnt_work" is within the lexical scope of @r. But it does not automatically execute code just because it uses a variable that might possible be in a closure or just because it is in a block that contains a definition of a sub.