use strict; use warnings; package Character; use AutoExecute; sub new { my ($class) = @_; return bless({ poisoned => 0, }, $class); } sub poisoned { my ($self) = @_; return auto_execute { my ($poisoned) = @_; $self->{poisoned} = $poisoned if @_; return $self->{poisoned}; }; } package main; my $char = Character->new(); my $poisoned = $char->poisoned; print($poisoned, "\n"); # 0 $poisoned->(1); print($poisoned, "\n"); # 1 $poisoned->(0); print($poisoned, "\n"); # 0