Set::Range - Easy conditional operations on a set of ranges.

- NAME
- SYNOPSIS
- INSTALLATION
- DESCRIPTION

- METHODS

- EXPORT
- BUGS & REQUESTS
- SEE ALSO
- AUTHOR

# NAME

Set::Range - Easy conditional operations on a set of ranges.

# SYNOPSIS

            use Set::Range;

            my %set= ('1' => {      lower => 0,
                                    upper => 10,
                                    upper_inclusive => 1,
                            },
                      '2' => {      lower => 11,
                                    upper => 100,
                                    lower_inclusive => 1,
                             },
                    );

            my $range=Set::Range->new(\%set); print $range->getSet('19', NUM_RANGE);
            # prints "2"

            my %set= ('Jan' => {    lower => '1/1/2001',
                                    upper => '1/31/2001',
                                    upper_inclusive => 1,
                                    lower_inclusive => 1,
                            }, # Days in January
                      'Feb' => {    lower => '2/1/2001',
                                    upper => '2/28/2001',
                                    upper_inclusive => 1,
                                    lower_inclusive => 1,
                             }, # Days in February
                    );

            my $range=Set::Range->new(\%set);

            print $range->getSet('1/11/2001', DATE_RANGE);
            # prints "Jan"

# INSTALLATION

       perl Makefile.PL
       make
       make test
       make install

Win32 users substitute ``make'' with ``nmake'' or equivalent. nmake is available at http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe

# DESCRIPTION

Set::Range allows you to define ranges of numeric or date values and will return the set that a given test value lies in. This module removes the need for multiple if .. elsif .. (etc) tests and lets you modify the sets on the fly without having to recode the logic in your scripts.

E.g.: define date ranges and test for which set '1/1/2002' is in.

## METHODS

new
  This creates the Set::Range Object

  Example: my $range = Set::Range->new(\%sets);

          Pass C<new()> a reference to a Hash containing the set
          information.

      =over 6

%sets

        The hash defining the sets contains one hash per set
        with at least 'upper' and 'lower' defined.
        'upper_inclusive' and 'lower_inclusive' are optional
        and are the equivalent of >= and <= for the upper and
        lower set boundries.

        The set hash can look like this:

        {
          'key1' => {
                      lower => 0,
                      upper => 10
                      },
          'key2' => {
                      lower => 10,
                      upper => 15,
                      lower_inclusive => 1,
                    },
          'key3' => {
                      lower => 15
                      upper => 25,
                      lower_inclusive => 1,
                      upper_inclusive => 1,
                    },
         }

        etc... The lower and upper values can either be
        numeric values or date values in the form
        mm/dd/yyyy or dd/mm/yyyy (see C<getSet> for
        Euro-formatted dates)

      =back

getSet
  `getSet()` returns the value of the set that the test item is a member of. Optionally accepts one of the following contants (defaults to numeric): NUM_RANGE, DATE_RANGE, EU_DATE_RANGE, TIME_RANGE(same as NUM_RANGE)

  Examples:

          my $set = $range->getSet(10);
          my $set = $range->getSet('1/14/2002', DATE_RANGE);

  getSet returns 0 if the test value was not found to be a member of any set.

  Note: Set::Range uses Date::Calc functions to convert the date to a datestamp. I settled on Date::Calc because Time::Local doesn't support years > 2038.

# EXPORT

NUM_RANGE, DATE_RANGE, EU_DATE_RANGE, TIME_RANGE constants

# BUGS & REQUESTS

Please let me know!

# SEE ALSO

Date::Calc

# AUTHOR

S. Flack : perl@simonflack.com