The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tie::NumRange - Keeps a number within a range of values.

SYNOPSIS

  use Tie::NumRange;
  
  tie my($chr), Tie::NumRange => (
    100,  # initial
    0,    # min
    255,  # max
  );
  
  $chr *= 3;  # $chr is 255
  $chr = -5;  # $chr is 0
  
  tie my($positive), Tie::NumRange => (
    1,
    1,
    undef
  );
  
  $positive = 2**16;  # ok
  $positive = 0;      # $pos is 1
  
  
  tie my($wrap), Tie::NumRange::Wrap => (
    0,   # initial
    0,   # min
    10,  # max
  );
  
  while ($wrap < 10) {
    # 0, 3, 6, 9, 2, 5, 8, 1, 4, 7
    $wrap += 3;
  }

DESCRIPTION

This module institutes a range of values for a number. The lower and upper bounds can be unlimited by passing undef in their place.

Tie::NumRange Constructor

  tie $number, Tie::NumRange => ($init, $min, $max);

If $min is undef, the number has no lower bound. Likewise for $max.

Tie::NumRange::Wrap Constructor

  tie $number, Tie::NumRange::Wrap => ($init, $min, $max);

Neither range can be undef. The value will wrap around when it goes outside the stated bounds.

AUTHOR

  Jeff "japhy" Pinyan
  CPAN ID: PINYAN
  japhy@pobox.com
  http://www.pobox.com/~japhy/