package Tie::NumRange; # (initial, low, high) sub TIESCALAR { my $class = shift; my $self = bless [ @_ ], $class; $self->STORE($_[0]); # just in case return $self; } sub STORE { my ($self,$val) = @_; return $self->[0] = $self->[1] if defined($self->[1]) and $self->[1] > $val; return $self->[0] = $self->[2] if defined($self->[2]) and $self->[2] < $val; return $self->[0] = $val; } sub FETCH { $_[0][0] } 1;