sub new_lvalue_counter { my $c = 0; return sub : lvalue { $c++; $c } } my $c3 = new_lvalue_counter; print &$c3, "\n" for 1..3; &$c3 = 10; print &$c3, "\n" for 1..3;