This is Info file pm.info, produced by Makeinfo version 1.68 from the
input file bigpm.texi.


File: pm.info,  Node: Bundle/Minivend,  Next: Bundle/Msql,  Prev: Bundle/Mail/IspMailGate,  Up: Module List

A nice to have modules for MiniVend
***********************************

NAME
====

   Bundle::Minivend - A nice to have modules for MiniVend

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Minivend''

CONTENTS
========

   MD5

   MIME::Base64

   Bundle::LWP

   Term::ReadKey

   Term::ReadLine::Perl

   Business::UPS

   SQL::Statement

   Storable

   Safe::Hole

   DBI

DESCRIPTION
===========

   This bundle installs the prerequisites for MiniVend as well as some
modules that are not strictly necessary.

   After installing this bundle, it is recommended that you quit the
current session and then run MiniVend's `makecat' program. That will give
you the benefit of line completion and history.

   None of the bundled modules are really needed for MiniVend, but some
functions require on them and you will be limited without them.

MD5 This module is used to generate unique cache keys. If you don't have it, then keys will be computed with a checksum that has a very low but not infinitesimal chance of causing a cache conflict.
Bundle::LWP Certain parts of these modules (URI::URL and MIME::Base64) are required for MiniVend's internal HTTP server. In addition, Data::Dumper makes the output of session dumps more readable.
Storable If you have this module session save speed increases by anywhere from 25-60%. Highly recommended for busy systems.
Business::UPS Enables lookup of shipping costs directly from www.ups.com.
SQL::Statement Enables SQL-style search query statements for MiniVend.
Term::ReadKey Helps Term::ReadLine::Perl generate completions and editing.
Term::ReadLine::Perl Gives you filename completion and command history in the makecat program. Not used otherwise.
DBI Necessary if you want to use MySQL or some other SQL database.
AUTHOR
======

   Mike Heins, <mike@minivend.com>


File: pm.info,  Node: Bundle/Msql,  Next: Bundle/Mysql,  Prev: Bundle/Minivend,  Up: Module List

A bundle to install Perl drivers for mSQL or MySQL
**************************************************

NAME
====

   Bundle::Msql - A bundle to install Perl drivers for mSQL or MySQL

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Msql''

CONTENTS
========

   DBI

   Data::ShowTable

   Msql

   DBD::mSQL

DESCRIPTION
===========

   This bundle includes all that's needed to run both DBI drivers and
non-DBI drivers for mSQL or MySQL.


File: pm.info,  Node: Bundle/Mysql,  Next: Bundle/Net/LDAP,  Prev: Bundle/Msql,  Up: Module List

A bundle to install Perl drivers for mSQL or MySQL
**************************************************

NAME
====

   Bundle::Mysql - A bundle to install Perl drivers for mSQL or MySQL

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Mysql''

CONTENTS
========

   DBI

   Data::ShowTable

   Mysql

   DBD::mysql

DESCRIPTION
===========

   This bundle includes all that's needed to run both DBI drivers and
non-DBI drivers for mSQL or MySQL.


File: pm.info,  Node: Bundle/Net/LDAP,  Next: Bundle/OpenInteract,  Prev: Bundle/Mysql,  Up: Module List

A bundle for Net::LDAP
**********************

NAME
====

   Bundle::Net::LDAP - A bundle for Net::LDAP

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Net::LDAP''

CONTENTS
========

   Convert::ASN1

   Digest::MD5

   URI

   URI::ldap

   IO::Socket::SSL

   XML::Parser

   Net::LDAP

DESCRIPTION
===========

   This bundle all modules that Net::LDAP depends on.

AUTHOR
======

   Graham Barr


File: pm.info,  Node: Bundle/OpenInteract,  Next: Bundle/ParallelUA,  Prev: Bundle/Net/LDAP,  Up: Module List

Bundle to install all the pre-requisites for OpenInteract
*********************************************************

NAME
====

   Bundle::OpenInteract - Bundle to install all the pre-requisites for
OpenInteract

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::OpenInteract''

CONTENTS
========

   SPOPS::Configure

   Mail::Sendmail (0.77)

   Template (2.00)

   Pod::Usage (1.12)

   Archive::Tar

   Compress::Zlib (1.08)

   Class::Singleton (1.03)

   HTML::Entities (1.13)

   Text::Sentence

   Date::Format (2.09)

   Date::Calc (4.3)

   Email::Valid (0.12)

   Apache::DBI (0.87)

   Apache::Session (1.50)

   Apache::Request (0.31)

   OpenInteract::Package

DESCRIPTION
===========

   Install all the modules needed for OpenInteract. A few of them have to
do with the package installer, but most are just for normal operation.

MORE INFORMATION
================

   Sourceforge Project Home:

     http://sourceforge.net/projects/openinteract/

   News, package repository and more information:

     http://www.openinteract.org/

AUTHOR
======

   Chris Winters <chris@cwinters.com>


File: pm.info,  Node: Bundle/ParallelUA,  Next: Bundle/PlRPC,  Prev: Bundle/OpenInteract,  Up: Module List

CPAN Bundle for the LWP Parallel User Agent extension
*****************************************************

NAME
====

   Bundle::ParallelUA - CPAN Bundle for the LWP Parallel User Agent
extension

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::ParallelUA''

CONTENTS
========

   ExtUtils::MakeMaker  - should be in perl disribution

   LWP::UserAgent       - Base for Parallel::UserAgent

   LWP::RobotUA         - Base for Parallel::RobotUA

   LWP::Protocol        - Base Protocol implementations

   LWP::Parallel        - Parallel User Agent itself

DESCRIPTION
===========

   This bundle defines all required modules for ParallelUserAgent.

AUTHOR
======

   Marc Langheinrich


File: pm.info,  Node: Bundle/PlRPC,  Next: Bundle/SNMP/MIB/Compiler,  Prev: Bundle/ParallelUA,  Up: Module List

A bundle to install PlRPC-Server, Client and prerequisites.
***********************************************************

NAME
====

   Bundle::PlRPC - A bundle to install PlRPC-Server, Client and
prerequisites.

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::PlRPC''

CONTENTS
========

   Storable

   Net::Daemon

   RPC::PlServer

DESCRIPTION
===========

   This bundle includes all that's needed to run PlRPC-Server and Client.


File: pm.info,  Node: Bundle/SNMP/MIB/Compiler,  Next: Bundle/SPOPS,  Prev: Bundle/PlRPC,  Up: Module List

A bundle to install all SNMP::MIB::Compiler related modules
***********************************************************

NAME
====

   Bundle::SNMP::MIB::Compiler - A bundle to install all
SNMP::MIB::Compiler related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::SNMP::MIB::Compiler''

CONTENTS
========

   Data::Dumper

   Data::Compare

DESCRIPTION
===========

   This bundle includes SNMP::MIB::Compiler which is a MIB compiler.

AUTHOR
======

   Fabien Tassin <`fta@oleane.net'>


File: pm.info,  Node: Bundle/SPOPS,  Next: Bundle/Search/InvertedIndex,  Prev: Bundle/SNMP/MIB/Compiler,  Up: Module List

Bundle to install all the pre-requisites for SPOPS
**************************************************

NAME
====

   Bundle::SPOPS - Bundle to install all the pre-requisites for SPOPS

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::SPOPS''

CONTENTS
========

   Date::Format (2.09)

   Data::Dumper

   Date::Calc (4.3)

   Storable (1.00)

   SPOPS::Configure

DESCRIPTION
===========

   Install the few modules needed for SPOPS. Note that this is the bare
minimum - to actually do something with the module you are probably going
to need at least `DBI' in this node plus one or more of the supported DBD
drivers (like *Note DBD/mysql: DBD/mysql,, `DBD::Sybase' in this node,
`DBD::ASAny' in this node). You can also currently use SPOPS with
`GDBM_File' in this node.

MORE INFORMATION
================

   Information on the web about this module is found with OpenInteract,
even though SPOPS is self-contained and is very useful outside of
OpenInteract.

   Sourceforge Project Home:

     http://sourceforge.net/projects/openinteract/

   News, package repository and more information:

     http://www.openinteract.org/

AUTHORS
=======

   Chris Winters <chris@cwinters.com>


File: pm.info,  Node: Bundle/Search/InvertedIndex,  Next: Bundle/Slash,  Prev: Bundle/SPOPS,  Up: Module List

A bundle to install all Search::InvertedIndex related modules
*************************************************************

NAME
====

   Bundle::Search::InvertedIndex - A bundle to install all
Search::InvertedIndex related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Search::InvertedIndex''

CONTENTS
========

   Digest::MD5             - For Tie::DB_File::SplitHash and
Tie::FileLRUCache

   Class::NamedParms       - Used by most of the system

   Class::ParmList         - Used by most of the system

   Tie::DB_File::SplitHash - Used by Search::InvertedIndex

   Tie::FileLRUCache       - Used by Search::InvertedIndex

   Search::InvertedIndex   - The Search::InvertedIndex module itself

DESCRIPTION
===========

   This bundle includes all the Search::InvertedIndex modules and modules
that it depends on.

AUTHOR
======

   Benjamin Franz <`snowhare@nihongo.org'>


File: pm.info,  Node: Bundle/Slash,  Next: Bundle/Tie/DB_File/SplitHash,  Prev: Bundle/Search/InvertedIndex,  Up: Module List

A bundle to install all modules used for Slash
**********************************************

NAME
====

   Bundle::Slash - A bundle to install all modules used for Slash

SYNOPSIS
========

   `perl -MCPAN -e 'install "Bundle::Slash"''

CONTENTS
========

   Bundle::CPAN		-
File::Spec,Digest::MD5,Compress::Zlib,libnet,Archive::Tar,Data::Dumper

   Bundle::LWP		- URI,HTML::Parser,MIME::Base64

   Getopt::Long

   DBI

   DBI::FAQ

   Bundle::DBD::mysql	- Data::ShowTable

   Date::Parse		- TimeDate

   XML::Parser

   XML::RSS

   Date::Manip

   Mail::Sendmail

   Apache::DBI

   Apache::Cookie

   Image::Size

   Template		- Template Toolkit

DESCRIPTION
===========

   mod_perl must be installed by hand, because of the special configuration
required for it.  DBIx::Password is special, and also installed by hand,
but needed.

   If CPAN starts downloading "perl-5.6.0" or somesuch, ctrl-C it, exit
the CPAN shell, and start it again.  The latest CPAN.pm version does not
have this problem, but older ones do, and you may have an older one
installed.

   Note that if you are not using MySQL, then you'll have some problems
with this.  Just let it fail and install your DB library manually.  Also
note that Compress::Zlib and XML::Parser need extra libraries (see INSTALL
for Slash, or the docs for the modules).

   We don't use Bundle::DBI because we don't need the Proxy stuff.  If you
want the Proxy stuff, then install Bundle::DBI yourself.


File: pm.info,  Node: Bundle/Tie/DB_File/SplitHash,  Next: Bundle/Tie/FileLRUCache,  Prev: Bundle/Slash,  Up: Module List

A bundle to install all Tie::DB_File::SplitHash related modules
***************************************************************

NAME
====

   Bundle::Tie::DB_File::SplitHash - A bundle to install all
Tie::DB_File::SplitHash related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Tie::DB_File::SplitHash''

CONTENTS
========

   Digest::MD5             - For repeatable 'random numbers'

   Tie::DB_File::SplitHash - The Tie::DB_File::SplitHash module itself

DESCRIPTION
===========

   This bundle includes the Tie::DB_File::SplitHash module and all modules
that it depends on.

AUTHOR
======

   Benjamin Franz <`snowhare@nihongo.org'>


File: pm.info,  Node: Bundle/Tie/FileLRUCache,  Next: Bundle/Tk,  Prev: Bundle/Tie/DB_File/SplitHash,  Up: Module List

A bundle to install all Tie::FileLRUCache related modules
*********************************************************

NAME
====

   Bundle::Tie::FileLRUCache - A bundle to install all Tie::FileLRUCache
related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Tie::FileLRUCache''

CONTENTS
========

   Digest::MD5             - For Tie::DB_File::SplitHash and
Tie::FileLRUCache

   Class::NamedParms       - Used by most of the system

   Class::ParmList         - Used by most of the system

   Tie::FileLRUCache       - The Tie::FileLRUCache module itself

DESCRIPTION
===========

   This bundle includes the Tie::FileLRUCache module and all modules that
it depends on.

AUTHOR
======

   Benjamin Franz <`snowhare@nihongo.org'>


File: pm.info,  Node: Bundle/Tk,  Next: Bundle/WWW/Search,  Prev: Bundle/Tie/FileLRUCache,  Up: Module List

CPAN Bundle for Tk and its dependencies
***************************************

NAME
====

   Bundle::Tk - CPAN Bundle for Tk and its dependencies

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Tk''

CONTENTS
========

   ExtUtils::MakeMaker  -  should be in perl disribution

   Net::NNTP            -  for proto news reader, also pulls in rest of
Net::* which LWP needs

   Mail::Internet       -  for news again

   LWP                  -  for tkweb

   Tk                   -  Tk itself!

DESCRIPTION
===========

AUTHOR
======

   Nick Ing-Simmons


File: pm.info,  Node: Bundle/WWW/Search,  Next: Bundle/WWW/Search/ALL,  Prev: Bundle/Tk,  Up: Module List

A bundle to install basic WWW::Search modules and prerequisites
***************************************************************

NAME
====

   Bundle::WWW::Search - A bundle to install basic WWW::Search modules and
prerequisites

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::WWW::Search''

CONTENTS
========

   Bundle::LWP		- prerequisite

   File::Spec		- prerequisite

   HTML::Parser            - prerequisite HTML::TreeBuilder       -
prerequisite

   HTTP::Cookies           - prerequisite HTTP::Request           -
prerequisite HTTP::Status            - prerequisite

   LWP::RobotUA            - prerequisite LWP::UserAgent          -
prerequisite

   URI::Escape             - prerequisite

   WWW::Search

DESCRIPTION
===========

   This bundle gathers together all of the prerequisite modules for
WWW::Search, as well as the basic WWW::Search mechanism itself.

AUTHOR
======

   Martin Thurn <`martinthurn@iname.com'> (Author only of this bundle, not
necessarily of the modules it lists)


File: pm.info,  Node: Bundle/WWW/Search/ALL,  Next: Bundle/Weather,  Prev: Bundle/WWW/Search,  Up: Module List

A bundle to install all WWW::Search modules and backends
********************************************************

NAME
====

   Bundle::WWW::Search::ALL - A bundle to install all WWW::Search modules
and backends

SYNOPSIS
========

   `perl Makefile.PL' make install `perl -MCPAN -e 'install
Bundle::WWW::Search::ALL''

CONTENTS
========

   Bundle::WWW::Search

   WWW::Search::AlltheWeb

   J/JS/JSMYSER/WWW-Search-AltaVista-AdvancedWeb-2.02.tar.gz

   J/JS/JSMYSER/WWW-Search-EuroSeek-1.03.tar.gz

   WWW::Search::Excite

   J/JS/JSMYSER/WWW-Search-Excite-News-2.04.tar.gz

   WWW::Search::Go

   J/JS/JSMYSER/WWW-Search-GoTo-1.07.tar.gz

   J/JS/JSMYSER/WWW-Search-Google-2.21.tar.gz

   WWW::Search::HotBot

   J/JS/JSMYSER/WWW-Search-LookSmart-2.05.tar.gz

   WWW::Search::Lycos

   M/MT/MTHURN/WWW-Search-Magellan-2.09.tar.gz

   J/JS/JSMYSER/WWW-Search-MetaCrawler-2.07.tar.gz

   J/JS/JSMYSER/WWW-Search-News-2.05.tar.gz

   WWW::Search::Nomade

   J/JS/JSMYSER/WWW-Search-NorthernLight.-2.06.tar.gz

   J/JS/JSMYSER/WWW-Search-OpenDirectory-2.02.tar.gz

   WWW::Search::PRWire

   WWW::Search::PubMed

   J/JS/JSMYSER/WWW-Search-Snap-2.06.tar.gz

   WWW::Search::Translator

   J/JS/JSMYSER/WWW-Search-X-Search-1.06.tar.gz

   M/MT/MTHURN/WWW-Search-Yahoo-2.21.tar.gz

   WWW::Search::YahooNews

   J/JS/JSMYSER/WWW-Search-ZDNet-2.02+.tar.gz

DESCRIPTION
===========

   This bundle gathers together all of the modules for WWW::Search,
including all the prerequisites and all the backends.

   If you know of other backends or updated backends, please inform the
author:

AUTHOR
======

   Martin Thurn <`martinthurn@iname.com'> (Author only of this bundle, not
necessarily of the modules it lists)


File: pm.info,  Node: Bundle/Weather,  Next: Bundle/Wizard,  Prev: Bundle/WWW/Search/ALL,  Up: Module List

a collection of modules for processing weather products
*******************************************************

NAME
====

   Bundle::Weather - a collection of modules for processing weather
products

DESCRIPTION
===========

   This bundle contains a collection of modules for processing weather
products (forecasts, observations, etc.).

   The current version only performs the only basic processing of weather
products.  Future versions may include modules for handling and routing
EMWIN (Emergency Managers Weather Information Network) streams. Or even
parsing the information into HTML or XML documents.

SYNOPSIS
========

   Below is a simple program which will fetch the latest state forecast
from the NWS server and print it out. (The default zone and URL will have
to be changed to match your location, of course.)

     require Weather::Product::NWS;

     $zone = shift || 'NYZ079';
     $file = 'ftp://iwin.nws.noaa.gov/data/text/FPUS61/KOKX.TXT';

     $forecast = new Weather::Product::NWS($file);

     print $forecast->text($zone), "\n";

CONTENTS
========

   Weather::WMO

   Weather::Product

   Weather::PIL

   Weather::UGC

   Weather::Product::NWS

AUTHOR
======

   Robert Rothenberg <wlkngowl@unix.asb.com>


File: pm.info,  Node: Bundle/Wizard,  Next: Bundle/Wizard/LDAP,  Prev: Bundle/Weather,  Up: Module List

A bundle to install all the application Wizard
**********************************************

NAME
====

   Bundle::Wizard - A bundle to install all the application Wizard

SYNOPSIS
========

     perl -MCPAN -e 'install Bundle::Wizard'

CONTENTS
========

   Bundle::HTML::EP

   Data::Dumper

   File::Spec

   Wizard

DESCRIPTION
===========

   This bundle defines all required modules for running the application
wizard.

AUTHOR
======

   Jochen Wiedmann, joe@ispsoft.de


File: pm.info,  Node: Bundle/Wizard/LDAP,  Next: Bundle/XML,  Prev: Bundle/Wizard,  Up: Module List

A bundle to install all the LDAP Wizard
***************************************

NAME
====

   Bundle::Wizard::LDAP - A bundle to install all the LDAP Wizard

SYNOPSIS
========

     perl -MCPAN -e 'install Bundle::Wizard::LDAP'

CONTENTS
========

   Bundle::HTML::EP

   Data::Dumper

   File::Spec

   Bundle::Wizard

   Compress::Zlib

   Convert::BER

   Net::LDAP

   Net::Netmask

   IO::AtomicFile

   Wizard::LDAP

DESCRIPTION
===========

   This bundle defines all required modules for running the application
wizard.

AUTHOR
======

   Jochen Wiedmann, joe@ispsoft.de


File: pm.info,  Node: Bundle/XML,  Next: Bundle/Xmms,  Prev: Bundle/Wizard/LDAP,  Up: Module List

A bundle to install all XML-related modules
*******************************************

NAME
====

   Bundle::XML - A bundle to install all XML-related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::XML''

CONTENTS
========

   Bundle::LWP		- prerequisite, along with:

   Date::Manip

   Parse::Yapp

   LWP::UserAgent

   Data::Dumper

   Storable

   XML::Parser		- Clark Cooper, Larry Wall

   XML::Encoding		- CLark Cooper

   E/EN/ENNO/XML-DOM-1.25.tar.gz		- Enno Derksen, Clark Cooper

   XML::Parser::PerlSAX		- Ken MacLeod; aso wrote:

   XML::Grove

   XML::Handler::Sample

   XML::ESISParser

   XML::Handler::XMLWriter

   XML::Handler::Subs

   XML::Handler::CanonXMLWriter

   Data::Grove

   XML::SAX2Perl

   XML::Perl2SAX

   XML::PatAct::MatchName

   XML::PatAct::ToObjects

   XML::PatAct::Amsterdam

   XML::PatAct::PatternTempl

   XML::PatAct::ActionTempl

   XML::Catalog		- Eric Bohlman

   XML::DT		- J Joao

   XML::Dumper		- Jonathan Eisenzopf; also wrote:

   XML::RSS

   XML::Registry

   XML::Generator		- Benjamin Holzman

   XML::Node		- Chang Liu

   XML::QL		- Matt Sergeant, Robert Hanson

   XML::Simple		- Grant McLean

   XML::Stream		- Ryan Eatmon

   XML::Template		- Geoffrey R. Hutchison

   XML::Twig		- Michel Rodriguez

   XML::Writer		- David Megginson

   XML::XPath	- Matt Sergeant; also wrote:

   XML::miniXQL

   DBIx::XML_RDB

   XSLT		- Geert Josten, Egon Willighagen

   XML::Handler::YAWriter		- Michael Koehne; also wrote:

   XML::Edifact

   E/EN/ENNO/XML-XQL-0.61.tar.gz 	- Enno Derksen

DESCRIPTION
===========

   This bundle gathers together all of the modules in the XML directory of
CPAN, along with some other XML-related modules, and (I think) all of the
modules on which these depend.

   In this version (0.1), XML::DOM and XML::XQL are installed via
hard-wired links to versions earlier than the current ones, because the
current versions fail to install automatically.  During the install, CPAN
will attempt but fail to install the latest versions of these from
libxml-enno-1.00. Ignore the errors: although this fails, XML::DOM and
XML::XQL are still installed, but at the earlier versions (1.25 and 0.61
respectively).  Other modules dependent on them should still work as well.

   At one stage during the install, you will be prompted to provide the
XML::Edifact installer with some input; the installation will pause until
you do so.

   Left out of this version (because make fails): XML::Filter::Hekeln

   In this version, I have ignored the fact that certain parts of certain
modules require specific versions (5.005 or 5.004 or 5.003) of Perl.
Sorry.

AUTHOR
======

   Colin Muller <`colin@durbanet.co.za'> (Author only of this bundle, not
of the modules it lists)


File: pm.info,  Node: Bundle/Xmms,  Next: Bundle/libnet,  Prev: Bundle/XML,  Up: Module List

Bundle for xmms remote control shell
************************************

NAME
====

   Bundle::Xmms - Bundle for xmms remote control shell

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::Xmms''

CONTENTS
========

   Term::ReadKey

   Term::ReadLine::Perl

   Term::ANSIColor

   MPEG::MP3Info

   Xmms

DESCRIPTION
===========

   The modules installed by this bundle will give you full power of the
xmms remote control shell.

AUTHOR
======

   Doug MacEachern


File: pm.info,  Node: Bundle/libnet,  Next: Bundle/pRPC-modules,  Prev: Bundle/Xmms,  Up: Module List

A bundle to install all libnet related modules
**********************************************

NAME
====

   Bundle::libnet - A bundle to install all libnet related modules

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::libnet''

CONTENTS
========

   Data::Dumper		- For Net::Config

   Net::Telnet		- For Net::Telnet by Jay Rogers

   Net::Cmd		- for libbet itself

DESCRIPTION
===========

   This bundle includes all the libnet distribution and the Net-Telnet
distribution by Jay Rogers <`jay@rgrs.com'>, which is a replacement module
for the original Net::Telnet module which was in the libnet distribution.

AUTHOR
======

   Graham Barr <`gbarr@ti.com'>


File: pm.info,  Node: Bundle/pRPC-modules,  Next: Business/CSI,  Prev: Bundle/libnet,  Up: Module List

modules - A bundle to install pRPC-modules and prerequisites
************************************************************

NAME
====

   Bundle::pRPC-modules - A bundle to install pRPC-modules and
prerequisites

SYNOPSIS
========

   `perl -MCPAN -e 'install Bundle::pRPC-modules''

CONTENTS
========

   Storable

   RPC::pServer

DESCRIPTION
===========

   This bundle includes all that's needed to run pRPC-modules.


File: pm.info,  Node: Business/CSI,  Next: Business/Cashcow,  Prev: Bundle/pRPC-modules,  Up: Module List

Name
====

   Business::CSI - Perl extension for Card Services International

The Example
===========

     use strict;
     use Business::CSI qw/ :simple :mail /;

     my $max_tries = 5;

     add_settings({
        'csi_config'=> '666999',
        'csi_host'  => 'secure.linkpt.net',
        'csi_port'  => '1139',
        'csi_key'   => '/etc/keyfile.pem',
     });
     
     add_settings({
         'card_number'  => '1234 5678 1234 5678',
         'card_expr_m'  => '07',
         'card_expr_y'  => '07',
         'name_on_card' => 'Some Looser',
         'email_addy'   => 'looser@aol.com',
     });
     
     add_item("A happy meal", 0.5);  # you don't need to use these.
     add_item("A sad   meal", 0.5);  # but it makes the line items show
                                     # in the admin/customer e-mail
     
     add_settings({
         'grand_total' => calc_total, # note that calc_total does not account
         'real'        => 0,          # for or affect the ship/sub/tax totals
     });
     
     my $count  = 0;
     my %result = ();
     {
         %result = simple_transaction;
     
         if(not $result{connected}) {
             print "$result{error_type} => $result{error}\n";
             die "Your order fail'd $max_tries times ... I give up." if $max_tries <= ++$count;
             redo;
         }
     }
     
     # at this point, we're successfull

     customer_notification_mail_settings({
         # see the documentation below if you want to use templates.
         'template'   => "filename.txt",
         'extra_text' => qq( This is some extra text.  Do you like reading it? )
         'BCC'        => "sales@our.downtown.com",
     });

     customer_notification_mail(1); # generally you wouldn't use the 1, see below
     
     foreach my $k (keys %result) {
         print "\$result{$k} = $result{$k}\n";
     }

%results population
===================

Success
-------

     These are all retrieved from a cc_order_get(order,
     OrderField_R_Something ...  function call.  These values are well
     documented in the linkpoint api so if you're wondering what values
     these can take on, consult the aforementioned documentation.

     'approval'  => $result[0], # OrderField_R_Approved
     'ref'       => $result[1], # OrderField_R_Ref
     'code'      => $result[2], # OrderField_R_Code
     'ordernum'  => $result[3], # OrderField_R_Ordernum
     'error'     => $result[4], # OrderField_R_Error
     'time'      => $result[5], # OrderField_R_Time
     'connected' => 1

Failure
-------

     'error_type' => $result[0], # any of process or setrequest
     'error'      => $result[1], # the error returned from CSI
     'connected'  => 0

     The error_type is the stage of the order process, either 'process' or
     'setrequest'.  Again, consult the linkpoint api docs to see what
     values can be returned.
     
     =head1 Settings

Settings - The available settings
---------------------------------

     csi_config   csi_key      csi_host     csi_port     cust_id
     order_id     name_on_card email_addy   card_number  card_expr_m
     card_expr_y  sub_total    tax_total    ship_total   grand_total  real

Settings - The defaults
-----------------------

     'csi_host'     => 'secure.linkpt.net',
     'csi_port'     => '1139',
     'cust_id'      => 'imcertainihavenoidea',
     'order_id'     => ('order' . '.'. time . '.' . $$),
     'email_addy'   => 'unknown@aol.com',
     'real'         => 0,

     'ship_total'   => 0,
     'sub_total'    => 0,
     'tax_total'    => 0,

Settings - Extra Info
---------------------

     Unless otherwise listed, they all default to undef.
     Note that 'csi_config' and 'csi_key' are really really needed.
     'csi_config' is your store number (or whatever they call it now).
     'csi_key' is your keyfile.pem.

     Another important setting is 'real'.  'real' should be set to
     0 while you're practicing -- not $real, and 1 when you're ready
     to do it for real. ;)

Email settings
==============

     Note that in order ot use the Email functions, you must put a ':mail' in
     your use line -- as seen in the example.

customer_notification_mail;
---------------------------

     This is the function that actually sends a mail to the customer.
     If you want it to use the localhost mail gateway (sendmail?), then
     call it like it was called in the example above.

     If (for some reason) you wish to use the customers own mail gateway,
     as discovered through the MX records for the domain, call the function
     with a 1 as the argument:

     customer_notification_mail(1);

template => "filename.txt"
--------------------------

     If this funciton is used, the customer_notification_mail function will
     use the named template to do the notification.  SUMMARY and ITEMIZED_LIST
     should appear on a line by themselves somewhere in the template.  They
     get replaced appropriately.

     Additionally, the word EXTRA_TEXT will be replaced by the extra_text
     setting.  If EXTRA_TEXT is not inthe template, then the extra_text setting is
     rendered useless.  Similarly, the EXTRA_TEXT will get replaced with nothing
     if you dont' set the extra_text field.

from => "someone", from => "someone@something.tld"
--------------------------------------------------

     Use this to set the email address the mail comes from (postmaster by
     default).  Business::CSI will attempt to appened a logical fqdn if
     it can't find an [@] in the address.

from_full => "Some Dude Department"
-----------------------------------

     With this you can set the Full Name for the from: header.
     This is reccomended ... for asthetic reasons.

subject => "Your Order with Some Damn Co."
------------------------------------------

     The subject line (if not specified) will be:
     'Subject: Your order (#X)'
     Where X will get replaced with the order # you specified.

BCC => "someoneelse@at.our.co"
------------------------------

     Our sales department keeps track of all our orders in a spreadsheet.
     I think that's kinda dumb, and offered to do a database thing.
     *shrug*  They'd rather get a copy of this.  That's what this is
     for.

To do
=====

     1. Billing Shipping info
     2. Credit card number sanity checks using Business::CreditCard
     3. ... I am accepting requests especially if you wanna throw me
         code snippits. ;)
     4. More documentation.  As people ask me questions, I make more and more
        less not clear. ;)

Known Bugs
==========

     None... they're fixed

Unknown Bugs
============

     None AFAIK.

Credits
=======

     "David Deppner" <dave@psyber.com>:

     1.  The double/float bugfix mentioned in the Changes log.
     2.  Insisted on a README.

Author
======

     Jettero Heller <jettero@voltar.org>

See Also
========

   perl(1).


File: pm.info,  Node: Business/Cashcow,  Next: Business/FedEx,  Prev: Business/CSI,  Up: Module List

Perl wrapper for Cascow, a lib for making Dankort payment.
**********************************************************

NAME
====

   Business::Cashcow - Perl wrapper for Cascow, a lib for making Dankort
payment.

SYNOPSIS
========

   A module for clearing Internet payment transactions with the Danish PBS
through a SSL connection, provided by the excellent OpenSSL library.
CashCow will clear the following kinds of transactions between a customer
and PBS:

     Dankort
     Visa/Dankort
     Eurocard
     MasterCard
     Visa

   This module is a perl wrapper for the c lib cashcow, se
http://www.cashcow.dk/ for more info.

DESCRIPTION
===========

   Business::Cashcow::InitCashcow("passphrase", "rc4key");

   Call this function to load the /etc/cashcow.ini file and setup state
regarding keys and certificates. Returns true if private key was
successfully unlocked using the supplied passphase, false otherwise.

     my $transaction = {card_number => '76009244561',
                        card_expirymonth => 7,
                        card_expiryyear => 8,
                        transaction_reference => '99910326',
                        transaction_amount => 7.25,
                        transaction_currency => 208,
                        merchant_name => 'Enterprise Advertising A/S',
                        merchant_address => 'Aarhusgade 108E, 3.',
                        merchant_city => 'Koebenhavn',
                        merchant_zip => '2100 OE',
                        merchant_region => '',
                        merchant_country => 'DNK',
                        merchant_poscode => 0,    # POS_ECOMMERCE_SSL
                        merchant_number => '2133334',
                        merchant_terminalid => 'INET01',
                        result_action => 0,
                        result_approval => '',
                        result_ticket => '',
                        cashcow => ''
                       };

     Business::Cashcow::RequestAuth($transaction, $ticket, "secret");

   This function make the initial communucation to verify the card etc. It
returns on of the folowing status messages:

     'action_approved',
     'action_decline',
     'action_partly_approved',
     'action_amount_error',
     'action_invalid_transaction',
     'action_no_reply',
     'action_system_error',
     'action_expired_card',
     'action_retransmit',
     'action_internal_error'

   and sets $ticket to a ticket to be used as reference of the transaction
in Cashcow::RequestCapture. It shoud be called as a response of an order.

     Business::Cashcow::RequestCapture($ticket,"secret",7.25);

   This function compleetes the payment. It should be called when the
merchant has fullfilled the order.

BUGS
====

   The software is an alpha, so don't blame me, but bug (and success)
reports are also welcome.

AUTHOR
======

   Gustav Kristoffer Ek <stoffer@netcetera.dk>

   Copyright 1999 Gustav Kristoffer Ek. All rights reserved. This program
is free software; you can redistribute it and/or modify it under the same
terms as Perl itself.


File: pm.info,  Node: Business/FedEx,  Next: Business/FedEx/Constants,  Prev: Business/Cashcow,  Up: Module List

Win32 API Extension for FedEx ShipAPI
*************************************

NAME
====

   Fedex - Win32 API Extension for FedEx ShipAPI

SYNOPSIS
========

     use Fedex;

DESCRIPTION
===========

   Stub documentation for Fedex, created by h2xs. It looks like the author
of the extension was negligent enough to leave the stub unedited.  Yes he
was.

EXPORT
------

   None by default.

AUTHOR
======

   Alex Schmelkin, alex@davanita.com

SEE ALSO
========

   perl(1).


File: pm.info,  Node: Business/FedEx/Constants,  Next: Business/FedEx/ShipAPI,  Prev: Business/FedEx,  Up: Module List

Constants used by Business::FedEx::ShipRequest;
***********************************************

NAME
====

   Business::FedEx::Constants - Constants used by
Business::FedEx::ShipRequest;

SYNOPSIS   Constants are used in the creation of a ShipRequest Object, and in a ShipRequest get_data() method.
==============================================================================================================

API
===

DESCRIPTION
===========

   Two parts to this documentation:

   1) SET FEDEX VALUES  - used by ShipRequest->new() (for ship and
rate...not track)

   2) GET FEDEX VALUES  - used by ShipRequest->get_data()

SET FEDEX VALUES:
-----------------

     transaction_id=>'32826482',                #--/-REQUIRED - Any number you want - used for error tracking
     	      account_number => '',                      #--/-REQUIRED - Your 9 digit FedEx Account number
     	      weight => '',                              #--/-REQUIRED
     	      weight_units =>'LBS',
     	      service => '1',
     	      special_services => '',
     	      ship_date => '',
     	      declared_value => '',
     	      cod_flag => 'N',
     	      cod_amount => '',
     	      cod_cashiers_check => '',
     	      special_services => 'NNNNNNNNNNNNN',
     	      dry_ice_weight => '',
     	      meter_number => '',                        #--/-REQUIRED - Your 7 digit FedEx meter number
     	      gif_label => '400',
     	      tracking_num => '',

     shipper_name => '',                        #--/-REQUIRED -
     shipper_company => '',                      #--/-REQUIRED -
     shipper_address1 => '',                    #--/-REQUIRED -
     shipper_address2 => '',
     shipper_city => '',                        #--/-REQUIRED -
     shipper_zip_code => '',                    #--/-REQUIRED -
     shipper_state => '',                       #--/-REQUIRED -
     shipper_phone => '',                       #--/-REQUIRED -
     
     dest_company => '',                        #--/-REQUIRED -
     dest_address1 => '',                       #--/-REQUIRED -
     dest_address2 => '',
     dest_city => '',                           #--/-REQUIRED -
     dest_zip_code => '',                       #--/-REQUIRED -
     dest_state => '',                          #--/-REQUIRED -
     dest_phone => '',                           #--/-REQUIRED -
     recipient_department => '',
     payor_account_number => '',                #--/-REQUIRED - 10 digit fedex account # of payor
     payment_code => '1',                       #--/-REQUIRED -
     reference_info => '',
     signature_release_flag => 'N',
     #
     hal_station_address1 => '',
     hal_city => '',
     hal_state => '',
     hal_zip_code => '',
     pkg_height => '',
     pkg_width => '',
     pkg_length => '',
     dim_units => '',
     future_day_ship => '',
     dest_country_code => 'US',
     ult_dest_country_code => 'US',
     shipper_country_code => 'US',
     #INTERNATIONAL SHIPPING ONLY-------------------------------------------------
     duties_pay_type => '',
     duties_account_num => '',
     pkg_description => '',
     manufacture_country_code => '',
     currency_type => '',
     carriage_value => '',
     unit_weight1 => '',
     unit_value1 => '',
     quantity1 => '',
     unit_measure1 => '',
     #local_ship_time => '',
     customs_value => '',
     ein_num => '',
     commercial_invoice_flag => '',
     hal_phone => '',

GET FEDEX VALUES:
-----------------

   You can get all the above values as well as the values listed below
through Business::FedEx::ShipRequest->get_data('constant_name'):

     'transaction_type';
     'transaction_id';
     'error_code';
     'error_mesg';
     'weight';
     'cod_tracking_num';
     'tracking_num';
     'ursa_code';
     'service_area';
     'base_charge';
     'total_surcharge';
     'total_discount';
     'net_charge';
     'billed_weight';
     'astra_bar_code';
     'gif_label';
     'delivery_day';
     'routing_location_id';
     'cod_label';
     'dim_weight_used';
     'tracking_form_id';
     'transaction_term';
     'tracking_status';
     'package_type';
     'service_type';
     'delivery_description';
     'signed_for';
     'delivery_time';
     'dispatch_exception';
     'cartage_agent';
     'status_exception';
     'cod_ret_track_num';
     'cod_flag';
     'num_tracking_activities';
     'pkg_type';
     'delivery_date';
     'track_1';
     'track_2';
     'track_3';
     'track_4';
     'track_5';
     'track_6';
     'track_7';
     'track_8';
     'track_9';
     'track_10';
     'track_11';
     'track_12';
     'track_13';
     'track_14';
     'track_15';

   Refer to the FedEx ShipAPI documentation.

EXPORT
------

   None by default.

AUTHOR
======

   Patrick Tully, ptully@avatartech.com

SEE ALSO
========

   Business::FedEx

   Business::FedEx::ShipRequest

   Business::FedEx::ShipAPI


File: pm.info,  Node: Business/FedEx/ShipAPI,  Next: Business/FedEx/ShipRequest,  Prev: Business/FedEx/Constants,  Up: Module List

Interface to the FedEx API libraries (Win32 ONLY!!)
***************************************************

NAME
====

   FedEx::ShipAPI - Interface to the FedEx API libraries (Win32 ONLY!!)

SYNOPSIS
========

     use FedEx::ShipAPI;
     my $s = new FedEx::ShipAPI(host=>'127.0.0.1', port=>6970);
     $s->connect() or die $FedEx::ShipAPI::errstr;
     $s->transaction(XXXX);
     $s->disconnect();

API
===

     int WEBAPIConnect(char *system, int port, char *userId, char *passWord);
     int WEBAPITransaction(char *sBuf, int sBufLen, char *rBuf, int rBufLen, int *actualRecvBufLen);
     int WEBAPIDisconnect(void);
     int WEBAPIReceive(char *rBuf, int rBufLen, int *actualRecvBufLen, int *rBufType);
     int WEBAPISend(char *sBuf, int sBufLen, int sBufType);
     int WEBAPISetLogFile(char *fileName);
     void WEBAPISetLogMode(int mode);
     int WEBAPISetTraceFile(char *fileName);
     void WEBAPISetTraceMode(int mode);
     void WEBAPISetReadTimeout(int duration);

DESCRIPTION
===========

   Use this to bounce transactions off the FedEx gateway shipping server

EXPORT
------

   None by default.

AUTHOR
======

   Alex Schmelkin, alex@davanita.com

SEE ALSO
========

   Business::FedEx Business::FedEx::Constants Business::FedEx::ShipRequest


File: pm.info,  Node: Business/FedEx/ShipRequest,  Next: Business/ISBN,  Prev: Business/FedEx/ShipAPI,  Up: Module List

Shipping/Tracking Interface to FedEx
************************************

NAME
====

   Business::FedEx::ShipRequest - Shipping/Tracking Interface to FedEx

SYNOPSIS
========

   ShipRequest gives you the ability to track, rate, and ship
international and domestic packages via FedEx.

API
===

DESCRIPTION
===========

   Two ways to use ShipRequest.  If you are on a Win32 system, you can use
ShipRequest directly (w/o using the proxy interface).  However, If you
plan on using ShipRequest on any other platform, you MUST use the proxy
interface.  Read 'USE PROXY' below for instructions.

CREATE A SHIPPING OBJECT:
-------------------------

   Refer to Business::FedEx::Constants or the FedEx ShipAPI documentation
for the required fields.

     use Business::FedEx::ShipRequest;
     $s = Business::FedEx::ShipRequest->new(constant_name=>'value',constant_name2=>'value',etc...);

SHIP A PACKAGE:
---------------

     $s->ship('username','secret','localhost','domestic');
     $s->ship('username','secret','localhost','international');

RATE A PACKAGE:
---------------

     $s->rate('username','secret','localhost','domestic');
     $s->rate('username','secret','localhost','international');

TRACK A PACKAGE:
----------------

     $s->track('username','secret','localhost','123456789098');

USE PROXY:
----------

   In order to use fedex.pl (proxy interface), you must install
Business::FedEx on a Win32 web server and put the fedex.pl script in
Win32's cgi-bin.  You can then make a ShipRequest from any box just by
including the url in the method call (instead of 'localhost').

     $s->ship('username','secret','http://www.hostname.com/cgi-bin/fedex.pl','domestic');

GET REPLY INFO:
---------------

   Refer to Business::FedEx::Constants for constant_name information or
refer to the FedEx ShipAPI documentation.

   $data = $s->get_data('constant_name');

EXPORT
------

   None by default.

AUTHOR
======

   Patrick Tully, ptully@avatartech.com

SEE ALSO
========

   Business::FedEx

   Business::FedEx::Constants

   Business::FedEx::ShipAPI


File: pm.info,  Node: Business/ISBN,  Next: Business/ISSN,  Prev: Business/FedEx/ShipRequest,  Up: Module List

work with International Standard Book Numbers
*********************************************

NAME
====

   Business::ISBN - work with International Standard Book Numbers

SYNOPSIS
========

     use Business::ISBN;
     
     $isbn_object = new Business::ISBN('1565922573');
     $isbn_object = new Business::ISBN('1-56592-257-3');
     
     #print the ISBN with hyphens at positions specified
     #by constructor
     print $isbn_object->as_string;
     
     #print the ISBN with hyphens at specified positions.
     #this not does affect the default positions
     print $isbn_object->as_string([]);
     
     #print the country code or publisher code
     print $isbn->country_code;
     print $isbn->publisher_code;
     
     #check to see if the ISBN is valid
     $isbn_object->is_valid;
     
     #fix the ISBN checksum.  BEWARE:  the error might not be
     #in the checksum!
     $isbn_object->fix_checksum;

     #EXPORTABLE FUNCTIONS
     
     use Business::ISBN qw( is_valid_checksum isbn_to_ean ean_to_isbn );
     
     #verify the checksum
     if( is_valid_checksum('0123456789') ) { ... }
     
     #convert to EAN (European Article Number)
     $ean = isbn_to_ean('1565921496');

     #convert from EAN (European Article Number)
     $isbn = ean_to_isbn('9781565921498');

DESCRIPTION
===========

new($isbn)
----------

   The constructor accepts a scalar representing the ISBN.

   The string representing the ISBN may contain characters other than
[0-9xX], although these will be removed in the internal representation.
The resulting string must look like an ISBN - the first nine characters
must be digits and the tenth character must be a digit, 'x', or 'X'.

   The constructor attempts to determine the country code and the
publisher code.  If these data cannot be determined, the constructor
returns an error number:

     -3 Could not determine publisher code
     -2 Could not determine country code
     -1 ISBN is not valid

   The string passed as the ISBN need not be a valid ISBN as long as it
superficially looks like one.  This allows one to use the `fix_checksum()'
method.  Despite the disclaimer in the discussion of that method, the
author has found it extremely useful.  One should check the validity of
the ISBN with `is_valid()' rather than relying on the return value of the
constructor.  If all one wants to do is check the validity of an ISBN, one
can skip the object-oriented interface and use the c<is_valid_checksum()>
function which is exportable on demand.

   If the constructor decides it can't create an object, it returns undef.
It may do this if the string passed as the ISBN can't be munged to the
internal format.

$obj->publisher_code
--------------------

   Returns the publisher code.

$obj->country_code
------------------

   Returns the country code.

$obj->hyphen_positions
----------------------

   Returns the list of hyphen positions as determined from the country and
publisher codes.  the as_string method provides a way to temporarily
override these positions and to even forego them altogether.

$obj->as_string(),  $obj->as_string([])
---------------------------------------

   Return the ISBN as a string.  This function takes an optional anonymous
array (or array reference) that specifies the placement of hyphens in the
string.  An empty list produces a string with no hyphens.

   The positions specified in the passed anonymous array are only used for
one method use and do not replace the values specified by the constructor.

   Positions less than 1 and greater than 9 are silently ignored.

   A terminating 'x' is changed to 'X'.

$obj->is_valid()
----------------

   Returns 1 if the checksum is valid and the country and publisher codes
are defined.

   Returns -1 if the ISBN does not pass the checksum test.  The
constructor accepts invalid ISBN's so that they might be fixed with
`fix_checksum'.

   Returns -2 if a country code could not be determined (relies on a valid
checksum).

   Returns -3 if a publisher code could not be determined (relies on a
valid checksum and country code).

$obj->fix_checksum()
--------------------

   Replace the tenth character with the checksum the corresponds to the
previous nine digits.  This does not guarantee that the ISBN corresponds
to the product one thinks it does, or that the ISBN corresponds to any
product at all.  It only produces a string that passes the checksum
routine.  If the ISBN passed to the constructor was invalid, the error
might have been in any of the other nine positions.

$obj->as_ean()
--------------

   Converts the ISBN to the equivalent EAN (European Article Number).  No
pricing extension is added.  Returns the EAN as a string.  This method can
also be used as an exportable function since it checks its argument list
to determine what to do.

EXPORTABLE FUNCTIONS
====================

   Some functions can be used without the object interface.  These do not
use object technology behind the scenes.

is_valid_checksum('1565921496')
-------------------------------

   Takes the ISBN string and runs it through the checksum comparison
routine.  Returns 1 if the ISBN is valid, 0 otherwise.

isbn_to_ean('1565921496')
-------------------------

   Takes the ISBN string and converts it to the equivalent EAN string.
This function checks for a valid ISBN and will return undef for invalid
ISBNs, otherwise it returns the EAN as a string.  Uses as_ean internally,
which checks its arguments to determine what to do.

ean_to_isbn('9781565921498')
----------------------------

   Takes the EAN string and converts it to the equivalent ISBN string.
This function checks for a valid ISBN and will return undef for invalid
ISBNs, otherwise it returns the EAN as a string.  Uses as_ean internally,
which checks its arguments to determine what to do.

AUTHOR
======

   brian d foy <brian@smithrenaud.com>

   Copyright 2000, Smith Renaud, Inc.

   The coding of this module was supported by Smith Renaud, Inc.
<URL:http://www.smithrenaud.com>.  This module is released under the terms
of the Perl Artistic License.

   Country code and publisher code graciously provided by Steve Fisher
<stevef@teleord.co.uk> of Whitaker (the UK ISBN folks and the major
bibliographic data provider in the UK).  "Whitaker - helping to link
authors to readers worldwide"

   Thanks to Julie Koo of Kaya Publishing <URL:http://www.kaya.com> for
useful discussions.

   Thanks to Mark W. Eichin <eichin@thok.org> for suggestions and
discussions on EAN support.  =cut


File: pm.info,  Node: Business/ISSN,  Next: Business/OnlinePayment,  Prev: Business/ISBN,  Up: Module List

Perl extension for International Standard Serial Numbers
********************************************************

NAME
====

   Business::ISSN - Perl extension for International Standard Serial
Numbers

SYNOPSIS
========

     use Business::ISSN;
     $issn_object = new Business::ISSN('1456-5935');
     $issn_object = new Business::ISSN('14565935');
     
     # print the ISSN with hyphens
     print $issn_object->as_string;

     # check to see if the ISSN is valid
     $issn_object->is_valid;
     
     #fix the ISSN checksum.  BEWARE:  the error might not be
     #in the checksum!
     $issn_object->fix_checksum;

     #EXPORTABLE FUNCTIONS
     
     use Business::ISSN qw( is_valid_checksum );
     
     #verify the checksum
     if( is_valid_checksum('01234567') ) { ... }

DESCRIPTION
===========

new($issn)
----------

   The constructor accepts a scalar representing the ISSN.

   The string representing the ISSN may contain characters other than
[0-9xX], although these will be removed in the internal representation.
The resulting string must look like an ISSN - the first seven characters
must be digits and the eighth character must be a digit, 'x', or 'X'.

   The string passed as the ISSN need not be a valid ISSN as long as it
superficially looks like one.  This allows one to use the `fix_checksum()'
method.

   One should check the validity of the ISSN with `is_valid()' rather than
relying on the return value of the constructor.

   If all one wants to do is check the validity of an ISSN, one can skip
the object-oriented  interface and use the c<is_valid_checksum()> function
which is exportable on demand.

   If the constructor decides it can't create an object, it returns undef.
It may do this if the string passed as the ISSN can't be munged to the
internal format.

$obj->as_string()
-----------------

   Return the ISSN as a string.

   A terminating 'x' is changed to 'X'.

$obj->is_valid()
----------------

   Returns 1 if the checksum is valid.

   Returns 0 if the ISSN does not pass the checksum test.  The constructor
accepts invalid ISSN's so that they might be fixed with `fix_checksum'.

$obj->fix_checksum()
--------------------

   Replace the eighth character with the checksum the corresponds to the
previous seven digits.  This does not guarantee that the ISSN corresponds
to the product one thinks it does, or that the ISSN corresponds to any
product at all.  It only produces a string that passes the checksum
routine.  If the ISSN passed to the constructor was invalid, the error
might have been in any of the other nine positions.

EXPORTABLE FUNCTIONS
====================

   Some functions can be used without the object interface.  These do not
use object technology behind the scenes.

is_valid_checksum('01234567')
-----------------------------

   Takes the ISSN string and runs it through the checksum comparison
routine.  Returns 1 if the ISSN is valid, 0 otherwise.

AUTHOR
======

   Sami Poikonen <sp@iki.fi>

   Copyright 1999, Sami Poikonen.

   This module is released under the terms of the Perl Artistic License.

   This module is a derived work from brian d foy's Business::ISBN.

SEE ALSO
========

   Business::ISBN and its documentation.


