<commit_before># NYU PDS Perl Modules

The NYU PDS Perl Modules are a set of libraries, written in Perl, that facilitate customized functionality for NYU's PDS implementation.

## Testing
This library uses the [Test Anything Protocol](http://testanything.org/) as the testing framework for its continuous integration implementation.
Since Ex Libris bundles its perl version with PDS, we use [perlbrew](http://perlbrew.pl/) to simulate the PDS environment.

We use `perl v5.8.9` since this is the same version that PDS reports using.

    primo@primo1(p3_1):~/p3_1/primom$perl -v
    This is perl, v5.8.9 built for i686-linux

### Dependencies
Since most software is built on the shoulders of giants and all good programmers should leverage that which has come before, 
our libraries have many dependencies which cause the testing environment and the actual PDS environments to differ.

These dependencies, have dependencies of there own, which introduces yet more variation between the environments,
but that is a rabbit hole left to braver souls.

#### Build Dependencies
There are two dependencies for building our testing framework:

1. `Module::Build (v0.4005)`
2. `YAML(v0.84)`

#### Library Bundled Dependencies
Since we use PDS' bundled perl and want to keep it in its original state,
we bundle `Class::Accessor` with this package in the `vendor/lib` directory.

#### Testing Modules
In order to run our tests, we use four testing modules

1. `Test::More (v0.98)`
2. `Devel::Cover (v1.03)`
3. `Test::Harness (v3.28)`
4. `TAP::Harness::Archive (v0.15)`


#### PDS Dependencies
PDS' Perl comes bundled with several perl module dependencies.
Some of these are out of date.
We use the latest version (as of the time of writing) and cross our fingers.
Unfortunately, we can't think of a cleaner way of doing this, so we
[get toasty](http://en.wikipedia.org/wiki/Dependency_hell).

The direct dependencies, with their versions are listed below.

| Dependency         | PDS Version | Testing Version |
|:------------------ | -----------:| ---------------:|
| `XML::Simple`      |        2.18 |            2.20 |
| `CGI::Session`     |        4.42 |            4.48 |
| `DBI`              |       1.609 |           1.627 |
| `Unicode::MapUTF8` |        1.11 |            1.11 |
| `HTML::TagFilter`  |        1.03 |            1.03 |<commit_msg>Update README.<commit_after># NYU PDS Perl Modules

The NYU PDS Perl Modules are a set of libraries, written in Perl, that facilitate customized functionality for NYU's PDS implementation.

## Testing
NYU PDS Perl Modules uses the [Test Anything Protocol](http://testanything.org/) as the testing framework for its 
continuous integration implementation.

Since Ex Libris bundles its perl version with PDS, we use [perlbrew](http://perlbrew.pl/) to simulate the PDS environment.
We use `perl v5.8.9` because that's what PDS reports using.

    primo@primo1(p3_1):~/p3_1/primom$perl -v
    This is perl, v5.8.9 built for i686-linux

### Dependencies
Since most software is built on the shoulders of giants and all good programmers should leverage that which has come before, 
our libraries have many dependencies which cause the testing environment and the actual PDS environments to differ.

These dependencies, have dependencies of there own, which introduces yet more variation between the environments,
but that is a rabbit hole left to braver souls.

[This sucks](http://en.wikipedia.org/wiki/Dependency_hell), but we can't think of a cleaner way of doing it.
Maybe [vagrant](http://www.vagrantup.com/) and 
[the Jenkin's VirtualBox plugin](https://wiki.jenkins-ci.org/display/JENKINS/VirtualBox+Plugin) can help at some point.

#### Build Dependencies
There are two dependencies for building our testing framework:

1. `Module::Build (v0.4005)`
2. `YAML(v0.84)`

#### Library Bundled Dependencies
Since we use PDS' bundled perl and want to keep it in its original state,
we bundle `Class::Accessor` with this package in the `vendor/lib` directory.

#### Testing Modules
In order to run our tests, we use four testing modules

1. `Test::More (v0.98)`
2. `Devel::Cover (v1.03)`
3. `Test::Harness (v3.28)`
4. `TAP::Harness::Archive (v0.15)`


#### PDS Dependencies
PDS' Perl comes bundled with several perl module dependencies.
Some of these are out of date.
We use the latest version (as of the time of writing) and cross our fingers.

The direct dependencies, with their versions are listed below.

| Dependency         | PDS Version | Testing Version |
|:------------------ | -----------:| ---------------:|
| `XML::Simple`      |        2.18 |            2.20 |
| `CGI::Session`     |        4.42 |            4.48 |
| `DBI`              |       1.609 |           1.627 |
| `Unicode::MapUTF8` |        1.11 |            1.11 |
| `HTML::TagFilter`  |        1.03 |            1.03 |
{'fraction_non_alphanumeric': 0.11325051759834369, 'fraction_numerical': 0.030227743271221533, 'mean_word_length': 3.1361301369863015, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6042516', 'n_tokens_mistral': 1501, 'n_tokens_neox': 1387, 'n_words': 595}