Perl Modules for Array/Set Handling

### Purpose

To cross-check a personal selection of modules which offer:

: include "fancy.table.tx" { data => $purpose };

Module names are read from data/module.list.ini, which is shipped with the distro.
Each module's data has an indicator - 'include = Yes/No' - which makes it easy to edit & re-run.
Further, each module has an indicator - 'overload_type = 1/2/3' - to specify the syntax to look for when processing overloads.
Per-module notes are handled using the same mechanism.
Excluded modules are listed at the end of this report.

### Modules included

: include "basic.table.tx" { row => $module_data };

[*] Multisets means new() takes a hash, so elements are (name, value) pairs.

Method names are found by scanning the source for /^sub.../.
Method names starting with '_' are ignored.
Also ignored are indented subs as in Set::Toolkit::TieArray, which is within the source of Set::Toolkit.
Sub-class files for Object::Array and Set::Scalar have been scanned and included.
Scanning the source means modules must be installed, but no attempt is made to load them at run-time.
Source files are found by running 'mwhere' which is shipped with the marvellous App::moduleswhere.
Version numbers are found by running 'mversion' which is shipped with the marvellous Module::Version.

### Methods

: include "basic.table.tx" { row => $method_data };

A cell containing 'Yes' means that module has a method of that name.
A token after 'Yes' is the overloaded operator defined in that module for that method.

Just because 2 modules have a method with the same name does not mean the subs' behaviour is identical.
Obviously names like symmetric_difference() are presumably the same, but there is a catch:
One module may expect you to call methods as functions, while the other uses methods (with $obj -> X() ).
As always, RTFM!

In order to make life difficult:

Object::Array fiddles a list of method names copied from List::MoreUtils.
Set::Light has 2 aliases for exists: has and contains.
Set::Object and Set::Toolkit define some overloads via subs. These are ignored.

### Module excluded

: include "basic.table.tx" { row => $excluded_data };

### Environment

: include "fancy.table.tx" { data => $environment };