[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]

Re: [ID 20000123.003] [BUG our() 5.005_63] Lexical scoping problems.



our() doesn't have any "local" component in it.

Consider:

    # CASE 0: grant access to global during scope,
    #         but assign to it forever
    our $var = "fred";

is really like

    # CASE 1: (same as previous)
    our $var;
    $var = "fred";

rather than like

    # CASE 2: grant access to global during scope, 
    #         and also assign it a new, run-time value 
    #         for this block only
    our $var;
    local $var = "fred";

In other words, the duration of a run-time assignment in a
compiler-noted our() declaration on a global is itself permanent
in effect and wholly unconcerned with blocks, even though the
"use-strict-legal" visibility conferred by the our() modifier is
restricted to that lexical block.

You'd be wanting

    local our $var = "fred";

if you're expecting both.  (And yes, it should be "our local" in
English.)

--tom


[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]