{ my $closure; sub x1{ $closure = shift if @_; $closure } sub x2{ $closure = shift if @_; $closure } };; print x1( 123 ); print x2(); print x2(456); print x1();; 123 123 456 456 #### { local our $closure; sub x1{ $closure = shift if @_; $closure } sub x2{ $closure = shift if @_; $closure } };; print x1( 123 ); print x2(); print x2(456); print x1();; 123 123 456 456 #### sub x1{ our $closure = shift if @_; $closure } sub x2{ our $closure = shift if @_; $closure };; print x1( 123 ); print x2(); print x2(456); print x1();; 123 123 456 456 #### sub x1{ state $closure = shift if @_; $closure } sub x2{ state $closure = shift if @_; $closure };; print x1( 123 ); print x2(); print x2(456); print x1();; 123 Use of uninitialized value in print at (eval 22) line 1, line 14. 456 123 #### sub x1{ state our $closure = shift if @_; $closure } sub x2{ state our $closure = shift if @_; $closure };; No such class our at (eval 23) line 1, near "{ state our" No such class our at (eval 23) line 1, near "{ state our"