This patch adds two modules: C4::Installer::PerlModule and 
C4::Installer::PerlDependencies. The latter provides a single point
of reference for cataloging Koha Perl dependencies. The former provides an OO 
style interface to the dependency catalog.

The format of C4::Installer::PerlDependencies is very simply an anonymous hash 
of hashes. Each second level hash takes this form:

'Foo::Bar' => {
  'usage'    => 'FooBar Feature',
  'required' => '1', # 0 if optional
  'min_ver'  => '0.01',
},

New modules can be appended to C4::Installer::PerlDependencies as needed and 
will be picked up by every piece of code which needs
this information.
---
 C4/Installer.pm                  |    1 +
 C4/Installer/PerlDependencies.pm |  494 ++++++++++++++++++++++++++++++++++++++
 C4/Installer/PerlModules.pm      |  249 +++++++++++++++++++
 3 files changed, 744 insertions(+), 0 deletions(-)
 create mode 100644 C4/Installer/PerlDependencies.pm
 create mode 100644 C4/Installer/PerlModules.pm

diff --git a/C4/Installer.pm b/C4/Installer.pm
index b3d798e..ca9e4be 100644
--- a/C4/Installer.pm
+++ b/C4/Installer.pm
@@ -22,6 +22,7 @@ use strict;
 
 our $VERSION = 3.00;
 use C4::Context;
+use C4::Installer::PerlModules 1.000000;
 
 =head1 NAME
 
diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm
new file mode 100644
index 0000000..c3eecdc
--- /dev/null
+++ b/C4/Installer/PerlDependencies.pm
@@ -0,0 +1,494 @@
+package C4::Installer::PerlDependencies;
+
+use warnings;
+use strict;
+
+our $PERL_DEPS = {
+    'XML::LibXSLT' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.59'
+    },
+    'Text::CSV::Encoded' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.09'
+    },
+    'Storable' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.21'
+    },
+    'PDF::API2' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2'
+    },
+    'Text::CSV_XS' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.32'
+    },
+    'Schedule::At' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.06'
+    },
+    'MIME::Lite' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '3'
+    },
+    'GD' => {
+        'usage'    => 'Patron Images Feature',
+        'required' => '0',
+        'min_ver'  => '2.39'
+    },
+    'List::MoreUtils' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.21'
+    },
+    'DBI' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.53'
+    },
+    'Net::Z3950::ZOOM' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.16'
+    },
+    'Biblio::EndnoteStyle' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.05'
+    },
+    'Date::Calc' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '5.4'
+    },
+    'Mail::Sendmail' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.79'
+    },
+    'DBD::mysql' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '4.004'
+    },
+    'XML::LibXML' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.59'
+    },
+    'POE' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.9999'
+    },
+    'Email::Date' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.103'
+    },
+    'HTML::Scrubber' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.08'
+    },
+    'XML::Dumper' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.81'
+    },
+    'URI::Escape' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.36'
+    },
+    'Unicode::Normalize' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.32'
+    },
+    'Text::Wrap' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2005.082401'
+    },
+    'Test' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.25'
+    },
+    'Locale::PO' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.17'
+    },
+    'LWP::Simple' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.41'
+    },
+    'DBD::SQLite2' => {
+        'usage'    => 'Offline Circulation Feature',
+        'required' => '0',
+        'min_ver'  => '0.33'
+    },
+    'SMS::Send' => {
+        'usage'    => 'SMS Messaging Feature',
+        'required' => '0',
+        'min_ver'  => '0.05'
+    },
+    'XML::SAX::ParserFactory' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.01'
+    },
+    'Test::Harness' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.56'
+    },
+    'PDF::API2::Util' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2'
+    },
+    'Class::Accessor' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.3'
+    },
+    'HTTP::OAI' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '3.2'
+    },
+    'LWP::UserAgent' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.033'
+    },
+    'MIME::Base64' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '3.07'
+    },
+    'Algorithm::CheckDigits' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.5'
+    },
+    'Net::LDAP' => {
+        'usage'    => 'LDAP Interface Feature',
+        'required' => '0',
+        'min_ver'  => '0.33'
+    },
+    'PDF::Reuse' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.33'
+    },
+    'DateTime' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.51'
+    },
+    'Graphics::Magick' => {
+        'usage'    => 'Patron Card Creator Feature',
+        'required' => '0',
+        'min_ver'  => '1.3.7'
+    },
+    'MARC::Charset' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.98'
+    },
+    'Memoize::Memcached' => {
+        'usage'    => 'Memcached Feature (Experimental)',
+        'required' => '0',
+        'min_ver'  => '0.03'
+    },
+    'Net::LDAP::Filter' => {
+        'usage'    => 'LDAP Interface Feature',
+        'required' => '0',
+        'min_ver'  => '0.14'
+    },
+    'Text::CSV' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.01'
+    },
+    'PDF::Table' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.9.3'
+    },
+    'CGI' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '3.15'
+    },
+    'Class::Factory::Util' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.6'
+    },
+    'List::Util' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.18'
+    },
+    'Lingua::Stem::Snowball' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.952'
+    },
+    'Time::localtime' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.02'
+    },
+    'Digest::SHA' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '5.43'
+    },
+    'Date::ICal' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.72'
+    },
+    'MARC::Crosswalk::DublinCore' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.02'
+    },
+    'CGI::Session::Serialize::yaml' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '4.2'
+    },
+    'CGI::Carp' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.29'
+    },
+    'Getopt::Long' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.35'
+    },
+    'HTML::Template::Pro' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.69'
+    },
+    'Term::ANSIColor' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.1'
+    },
+    'Getopt::Std' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.05'
+    },
+    'Data::Dumper' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.121'
+    },
+    'Lingua::Stem' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.82'
+    },
+    'MIME::QuotedPrint' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '3.07'
+    },
+    'IPC::Cmd' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.46'
+    },
+    'HTTP::Cookies' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.39'
+    },
+    'HTTP::Request::Common' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.26'
+    },
+    'PDF::Reuse::Barcode' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.05'
+    },
+    'Test::More' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.8'
+    },
+    'GD::Barcode::UPCE' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.1'
+    },
+    'Text::Iconv' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.7'
+    },
+    'File::Temp' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.16'
+    },
+    'Date::Manip' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '5.44'
+    },
+    'Locale::Language' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.07'
+    },
+    'PDF::API2::Simple' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1'
+    },
+    'XML::RSS' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.31'
+    },
+    'XML::Simple' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.14'
+    },
+    'PDF::API2::Page' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2'
+    },
+    'CGI::Session' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '4.2'
+    },
+    'POSIX' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.09'
+    },
+    'Digest::MD5' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.36'
+    },
+    'Authen::CAS::Client' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.05'
+    },
+    'Data::ICal' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.13'
+    },
+    'MARC::Record' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2'
+    },
+    'Locale::Currency::Format' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.28'
+    },
+    'Number::Format' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.52'
+    },
+    'YAML::Syck' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.71'
+    },
+    'Time::HiRes' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '1.86'
+    },
+    'MARC::File::XML' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.88'
+    },
+    'XML::SAX::Writer' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '0.44'
+    },
+    'JSON' => {
+        'usage'    => 'Core',
+        'required' => '1',
+        'min_ver'  => '2.07'
+    }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+C4::Installer::PerlDependencies
+
+=head1 ABSTRACT
+
+A module for cataloging Koha Perl dependencies.
+
+=head1 SYNOPSIS
+
+This module's sole purpose for existence is to provide a single location to 
catalog all Koha Perl dependencies. New dependencies should be added to the
+end of the outer hash and follow the key/value pattern used in the other 
dependencies.
+
+=head1 AUTHOR
+
+Chris Nighswonger <cnighswonger AT foundations DOT edu>
+
+=head1 COPYRIGHT
+
+Copyright 2010 Foundations Bible College.
+
+=head1 LICENSE
+
+This file is part of Koha.
+
+Koha is free software; you can redistribute it and/or modify it under the 
terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later 
version.
+
+You should have received a copy of the GNU General Public License along with 
Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+Suite 330, Boston, MA  02111-1307 USA
+
+=head1 DISCLAIMER OF WARRANTY
+
+Koha is distributed in the hope that it will be useful, but WITHOUT ANY 
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+=cut
diff --git a/C4/Installer/PerlModules.pm b/C4/Installer/PerlModules.pm
new file mode 100644
index 0000000..9419ce8
--- /dev/null
+++ b/C4/Installer/PerlModules.pm
@@ -0,0 +1,249 @@
+package C4::Installer::PerlModules;
+
+use warnings;
+use strict;
+
+use File::Spec;
+
+use C4::Installer::PerlDependencies;
+
+use version; our $VERSION = qv('1.0.0_1');
+
+our $PERL_DEPS = $C4::Installer::PerlDependencies::PERL_DEPS;
+
+sub new {
+    my $invocant = shift;
+    my $self = {
+        missing_pm  => [],
+        upgrade_pm  => [],
+        current_pm  => [],
+    };
+    my $type = ref($invocant) || $invocant;
+    bless ($self, $type);
+    return $self;
+}
+
+sub prereq_pm {
+    my $self = shift;
+    my $prereq_pm = {};
+    for (keys %$PERL_DEPS) {
+        $prereq_pm->{$_} = $PERL_DEPS->{$_}->{'min_ver'};
+    }
+    return $prereq_pm;
+}
+
+sub required {
+    my $self = shift;
+    my %params = @_;
+    if ($params{'module'}) {
+        return -1 unless grep {m/$params{'module'}/} keys(%$PERL_DEPS);
+        return $PERL_DEPS->{$params{'module'}}->{'required'};
+    }
+    elsif ($params{'required'}) {
+        my $required_pm = [];
+        for (keys %$PERL_DEPS) {
+            push (@$required_pm, $_) if $PERL_DEPS->{$_}->{'required'} == 1;
+        }
+        return $required_pm;
+    }
+    elsif ($params{'optional'}) {
+        my $optional_pm = [];
+        for (keys %$PERL_DEPS) {
+            push (@$optional_pm, $_) if $PERL_DEPS->{$_}->{'required'} == 0;
+        }
+        return $optional_pm;
+    }
+    else {
+        return -1; # unrecognized parameter passed in
+    }
+}
+
+sub version_info {
+    no warnings; # perl throws warns for invalid $VERSION numbers which some 
modules use
+    my $self = shift;
+#   Reset these arrayref each pass through to ensure current information
+    $self->{'missing_pm'} = [];
+    $self->{'upgrade_pm'} = [];
+    $self->{'current_pm'} = [];
+    my %params = @_;
+    if ($params{'module'}) {
+        return -1 unless grep {m/$params{'module'}/} keys(%$PERL_DEPS);
+        eval "require $params{'module'}";
+        if ($@) {
+            return {$params{'module'} => {cur_ver => 0, min_ver => 
$PERL_DEPS->{$_}->{'min_ver'}, upgrade => 0, required => 
$PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}};
+        }
+        elsif ($params{'module'}->VERSION lt 
$PERL_DEPS->{$params{'module'}}->{'min_ver'}) {
+            return {$params{'module'} => {cur_ver => 
$params{'module'}->VERSION, min_ver => 
$PERL_DEPS->{$params{'module'}}->{'min_ver'}, upgrade => 1, required => 
$PERL_DEPS->{$params{'module'}}->{'required'}, usage => 
$PERL_DEPS->{$_}->{'usage'}}};
+        }
+        else {
+            return {$params{'module'} => {cur_ver => 
$params{'module'}->VERSION, min_ver => 
$PERL_DEPS->{$params{'module'}}->{'min_ver'}, upgrade => 0, required => 
$PERL_DEPS->{$params{'module'}}->{'required'}, usage => 
$PERL_DEPS->{$_}->{'usage'}}};
+        }
+    }
+    else {
+        for (keys(%$PERL_DEPS)) {
+            eval "require $_";
+            if ($@) {
+                push (@{$self->{'missing_pm'}}, {$_ => {cur_ver => 0, min_ver 
=> $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, 
usage => $PERL_DEPS->{$_}->{'usage'}}});
+            }
+            elsif ($_->VERSION lt $PERL_DEPS->{$_}->{'min_ver'}) {
+                push (@{$self->{'upgrade_pm'}}, {$_ => {cur_ver => 
$_->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => 
$PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
+            }
+            else {
+                push (@{$self->{'current_pm'}}, {$_ => {cur_ver => 
$_->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => 
$PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
+            }
+        }
+        return;
+    }
+}
+
+sub get_attr {
+    return $_[0]->{$_[1]};
+}
+
+sub module_count {
+    return scalar(keys(%$PERL_DEPS));
+}
+
+sub module_list {
+    return keys(%$PERL_DEPS);
+}
+
+1;
+__END__
+
+=head1 NAME
+
+C4::Installer::PerlModules
+
+=head1 ABSTRACT
+
+A module for manipulating Koha Perl dependency list objects.
+
+=head1 METHODS
+
+=head2 new()
+
+    Creates a new PerlModules object 
+
+    example:
+        C<my $perl_modules = C4::Installer::PerlModules->new;>
+
+=head2 prereq_pm()
+
+    Returns a hashref of a hash of module information suitable for use in 
Makefile.PL
+
+    example:
+        C<my $perl_modules = C4::Installer::PerlModules->new;
+
+        ...
+
+        PREREQ_PM    => $perl_modules->prereq_pm,>
+
+=head2 required()
+
+    This method accepts a single parameter with three possible values: a 
module name, the keyword 'required,' the keyword 'optional.' If passed the name 
of a module, a boolean value is returned indicating whether the module is 
required (1) or not (0). If on of the two keywords is passed in, it returns an 
arrayref to an array who's elements are the names of the modules specified 
either required or optional.
+
+    example:
+        C<my $is_required = $perl_modules->required(module => 'CGI::Carp');>
+
+        C<my $optional_pm_names = $perl_modules->required(optional => 1);>
+
+=head2 version_info()
+
+    Depending on the parameters passed when invoking, this method will give 
the current status of modules currently used in Koha as well as the currently 
installed version if the module is installed, the current minimum required 
version, and the upgrade status. If passed C<module => module_name>, the method 
evaluates only that module. If passed C<all => 1>, all modules are evaluated.
+
+    example:
+        C<my $module_status = $perl_modules->version_info(module => 'foo');>
+
+        This usage returns a hashref with a single key/value pair. The key is 
the module name. The value is an anonymous hash with the following keys:
+
+        cur_ver = version number of the currently installed version (This is 0 
if the module is not currently installed.)
+        min_ver = minimum version required by Koha
+        upgrade = upgrade status of the module relative to Koha's requirements 
(0 if the installed module does not need upgrading; 1 if it does)
+        required = 0 of the module is optional; 1 if required
+
+        {
+          'CGI::Carp' => {
+                           'required' => 1,
+                           'cur_ver' => '1.30_01',
+                           'upgrade' => 0,
+                           'min_ver' => '1.29'
+                         }
+        };
+
+        C<$perl_modules->version_info;>
+
+        This usage loads the same basic data as the previous usage into three 
accessors: missing_pm, upgrade_pm, and current_pm. Each of these may be 
accessed by using the C<get_attr> method. Each accessor returns an anonymous 
array who's elements are anonymous hashes. They follow this format (NOTE: 
Upgrade status is indicated by the accessor name.):
+
+        [
+                  {
+                    'Text::CSV::Encoded' => {
+                                              'required' => 1,
+                                              'cur_ver' => 0.09,
+                                              'min_ver' => '0.09'
+                                            }
+                  },
+                  {
+                    'Biblio::EndnoteStyle' => {
+                                                'required' => 1,
+                                                'cur_ver' => 0,
+                                                'min_ver' => '0.05'
+                                              }
+                  },
+        }
+
+=head2 get_attr(attr_name)
+
+    Returns an anonymous array containing the contents of the passed in 
accessor. Valid accessors are:
+
+    missing_pm - Perl modules used by Koha but not currently installed.
+
+    upgrade_pm - Perl modules currently installed but below the minimum 
version required by Koha.
+
+    current_pm - Perl modules currently installed and up to date as required 
by Koha.
+
+    example:
+        C<my $missing_pm = $perl_modules->get_attr('missing_pm');>
+
+=head2 module_count
+
+    Returns a scalar value representing the current number of Perl modules 
used by Koha.
+
+    example:
+        C<my $module_count = $perl_modules->module_count;>
+
+=head2 module_list
+
+    Returns an array who's elements are the names of the Perl modules used by 
Koha.
+
+    example:
+        C<my @module_list = $perl_modules->module_list;>
+
+    This is useful for commandline exercises such as:
+
+        perl -MC4::Installer::PerlModules -e 'my $deps = 
C4::Installer::PerlModule->new; print (join("\n",$deps->module_list));'
+
+=head1 AUTHOR
+
+Chris Nighswonger <cnighswonger AT foundations DOT edu>
+
+=head1 COPYRIGHT
+
+Copyright 2010 Foundations Bible College.
+
+=head1 LICENSE
+
+This file is part of Koha.
+
+Koha is free software; you can redistribute it and/or modify it under the 
terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later 
version.
+
+You should have received a copy of the GNU General Public License along with 
Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+Suite 330, Boston, MA  02111-1307 USA
+
+=head1 DISCLAIMER OF WARRANTY
+
+Koha is distributed in the hope that it will be useful, but WITHOUT ANY 
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+=cut
-- 
1.7.0.4

_______________________________________________
Koha-patches mailing list
Koha-patches@lists.koha.org
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to