I realized that I mixed up the outputs in the last command - the behaviour of the explicit local is not reversed as I indicated. $ perl -le '$foo = 3; unless (local $foo = 4) { } print $foo' 4 $ perl -le '$foo = 3; until (local $foo = 4) { } print $foo' 3 This makes more sense, as the problem now appears to be with any localised variable, whether explicit or implicit. -- Jason RhinelanderThread Next