use strict; my $bool = TrueOnce->new(); print $bool->value(), "\n" for (0..4); package TrueOnce; sub new { bless { true=>1 }, shift } sub value { my $self = shift; my $val = $self->{'true'}; $self->{'true'} = 0; return $val; }