$\ = "\n"; $foo = 3; sub foo :lvalue { $foo } { local *foo = sub :lvalue { $foo *= 1.25; $foo; }; { local $foo; print '1: ',(foo() = 4); print '2: ',(foo() *= 4); foo() = 2; local *foo = sub :lvalue { local $foo = $foo * 1.25; $foo; }; print '3: ',(foo() *= 4); } local $foo = 4; print '4: ',(foo() /= 2); print '5: ',foo(); } print '6: ',foo(); __END__ 1: 4 2: 20 3: 10 4: 2.5 5: 3.125 6: 3