Cool Perl Code

What A New Perl Release
Version 5.002
Who a lot of people
Where Download or see CPAN
What
Perl 5.002 is released.  (It was actually released on February 29th, but
we had a little mixup about getting the word out.)

Read the INSTALL file before installing the software!  It will answer
most of your questions.  If you still have problems after following the
advice therein read the hints file for your OS (if there is one).  The
hints files are in the hints subdirectory of the source tree.  If that
doesn't help contact the Perl5 Porters by sending mail to
perl5-porters@nicoh.com.

Among the differences between this release and 5.001m are:

  - Lots and lots of bugs were fixed.  Doubtless new bugs were
    introduced, but with any luck the bug population took a big net hit.

  - The biggest new feature in the Perl core with this release is that
    of subroutine prototypes.  See the perlsub(1) man page for details.

  - The documentation has been greatly expanded and enhanced, both for
    the core and for the standard libraries.  5.002 contains about twice
    as much documentation as 5.001m had.  All of the standard libraries
    have man pages now.

  - A couple of new functions were added to the core (tied() and
    sysopen()).

  - Some new command line switches are supported by the perl binary (-h,
    -m, -M, -V, -V:name and the :debugger part of -d:debugger), see
    perlrun(1).

  - A number of new standard modules were added, including

        Devel::SelfStubber
        DirHandle
        File::Copy
        FileCache
        Pod::Text
        Safe
        SelectSaver
        SelfLoader
        Symbol
        Text::Wrap
        Tie::Scalar

        diagnostics
        overload
        vars

    See the individual man pages for details.

  - A number of modules were greatly enhanced.  (The FileHandle module
    is definitely worth revisiting.)

  - Some modules were renamed.

                        is now
                        ------
        TieHash         Tie::Hash
        SubstrHash      Tie::SubstrHash

    (We meant to leave stubs in place of the old names for these
    (explaining where they went), but that slipped through the cracks.)

  - The standard @INC path has been restructured a bit.  The
    architecture-dependant directory is now named after the version of
    Perl it's meant to work with (/usr/local/lib/perl5/$arch/5.002, eg).
    An additional architecture-dependant directory has been added under
    site_perl (/usr/local/lib/perl5/site_perl/$arch).  Locally installed
    modules now install into site_perl by default.

  - A new standard sub-version number has been added so we can
    circumvent "official unofficial" release numbers in the future,
    beloved though they were.  Subversions will be numbered like
    5.002_01; `require 5.002_01' works as you'd expect (failing for
    5.002, succeeding for 5.002_01, 5.002_23 and 5.003).

  - Signal handlers installed via %SIG are now installed using
    sigaction() on all platforms which support it.

Availability for non-Unix platforms:

  - VMS:  The standard distribution contains support for VMS, but due to
    a last-minute glitch you can't use 5.002 as distributed.  Sorry
    about that.  The 5.002_01 development release (coming soon) will
    support VMS.  It will be found on CPAN in the src/5.0/unsupported
    directory.

  - OS/2:  5.002 builds on OS/2.  Read the files in the os2/ directory
    of the distribution.

  - Windows 95 and Windows NT:  The most current version of Perl for
    your system is still based on 5.001m, unfortunately.  See

        http://www.perl.hip.com

    for more info.

  - Mac, DOS, Windows 3.1 and Amiga:  Perl 5.002 isn't available for any
    of these platforms yet.  Watch comp.lang.perl.announce for
    availability.

The 5.002 distribution file is 1544222 bytes big.  The MD5 hash of it is

    MD5(perl5.002.tar.gz): 2c76296aee35a98451110d3d985cae65

.  You can download it from

    http://www.perl.com/CPAN/src/5.0/perl5.002.tar.gz

, this will actually connect you to a CPAN site near you (for some
definition of near) (Thanks, Tom!).  If you want to do it the old
fashioned way it's in the file

    src/5.0/perl5.002.tar.gz

at all the CPAN sites.  (CPAN is the Comprehensive Perl Archive
Network.)  The currently registered CPAN sites are

    Africa
        South Africa
            ftp://ftp.is.co.za/programming/perl/CPAN/
    Asia
        Japan
            ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/
        Taiwan
            ftp://dongpo.math.ncu.edu.tw/perl/CPAN/
    Australasia
        Australia
            ftp://coombs.anu.edu.au/pub/perl/CPAN/
            ftp://ftp.mame.mu.oz.au/pub/perl/CPAN/
        New Zealand
            ftp://ftp.tekotago.ac.nz/pub/perl/CPAN/
    Canada
        British Columbia
            ftp://mango.pinc.com/pub/mirrors/CPAN/
    Europe
        Austria
            ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/
        Czech Republic
            ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
        Denmark
            ftp://sunsite.auc.dk/pub/languages/perl/CPAN/
        Finland
            ftp://ftp.funet.fi/pub/languages/perl/CPAN/
        France
            ftp://ftp.ibp.fr/pub/perl/CPAN/
            ftp://ftp.pasteur.fr/pub/computing/unix/perl/CPAN/
        Germany
            ftp://ftp.leo.org/pub/comp/programming/languages/perl/CPAN/
            ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
        Greece
            ftp://ftp.ntua.gr/pub/lang/perl/
        Poland
            ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
        Portugal
            ftp://ftp.ci.uminho.pt/pub/lang/perl/
        Slovenia
            ftp://ftp.arnes.si/software/perl/CPAN/
        Spain
            ftp://ftp.rediris.es/mirror/CPAN/
        Sweden
            ftp://ftp.sunet.se/pub/lang/perl/CPAN/
        Switzerland
            ftp://ftp.switch.ch/mirror/CPAN/
        the Netherlands
            ftp://ftp.cs.ruu.nl/pub/Perl/CPAN/
        UK
            ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
            ftp://unix.hensa.ac.uk/mirrors/perl-CPAN/
    USA
        California
            ftp://ftp.cdrom.com/pub/perl/CPAN/
        Florida
            ftp://ftp.cis.ufl.edu/pub/perl/CPAN/
        Illinois
            ftp://uiarchive.cso.uiuc.edu/pub/lang/perl/CPAN/
        Massachusetts
            ftp://ftp.delphi.com/pub/mirrors/packages/perl/CPAN/
        Oklahoma
            ftp://ftp.uoknor.edu/mirrors/CPAN/
        Texas
            ftp://ftp.metronet.com/pub/perl/
            ftp://ftp.sedl.org/pub/mirrors/CPAN/
            ftp://ftp.sterling.com/CPAN/

A note about the next release:  5.002_01 and above will enable EMBED by
default.  This will break binary compatibility with 5.001m and 5.002.
This means that when you install 5.002_01 you'll have to recompile all
your locally installed dynamically loadable modules.  We're going to try
to make that the last time that recompiling modules will be necessary
for a while.


What MiniVend - A Shopping Cart System
Version .02
Who Andrew Wilcox and Mike Heins
Where Vend Home Page

MiniVend Home Page

Comments MiniVend is part of what makes the net, Perl, and freeware communities great. It is a full featured system, rivaling any commercial product. It's well done and well thought out. Just amazing.
What See the home pages. All the information is there.


What Gann Perl Generic Neural Networks Module
Version 0.01
Who Tuomas J. Lukka, Tuomas.Lukka@Helsinki.FI
Where Download or see CPAN
What
This purpose of this message is to announce the availability of
Gann version 0.01, a copylefted artificial neural network simulator.

Unlike Version 0.00, Version 0.01 is already almost usable.
Therefore, Gann can be considered alpha software from now on.
However, even though the documentation is there, there are 
lots of things still missing.

The purpose of announcing Gann at this early stage is to solicit
comments on the programming and user interfaces to the simulator.
Currently, Gann only contains routines to do back-propagation with
gradient descent or momentum descent. However, the interfaces are
very generic and adding new algorithms is very easy.

Gann is copylefted, see the file COPYING in the distribution for details.

What's new?
  - Graphical user interface, requires Tk-b9.01 (available from CPAN)
    see http://www.helsinki.fi/~lukka/gann.html for screen shots.
  - Nomenclature: Changed all package names to be under Math::Neural.
  - Convergence detection in minimization.
  - Temporal difference algorithm (TD(lambda))
  - Bug fixes

Gann is implemented as a Perl module using C++ for the speed-critical
parts and Perl for everything else, for maximum flexibility.
You need perl version 5.002b2 or higher (perl 5.001 is rumoured to work but..).

The package contains an example program demonstrating the learning
of the 'xor' function.

If you are interested in seeing the package developed in a certain
direction, please send me email. I'm especially interested in comments
about the following issues
 - What is good and what is bad about the current interfaces in Gann
 - What other net types than backprop should I include? 
   (for example, Kohonen etc. Which types of nets are currently
   'hot' and which are not so interesting)
 - What minimization algorithms should I include, what algorithms
   do you have good and/or bad experiences with?

If possible, please include references to publications, or code 
on the net.

I'd like to make Gann a general grab-bag of neural network algorithms
containing well-documented code and examples for any algorithms
one might want to use, implemented in an object-oriented fashion to encourage
reuse and interesting multi-network experiments.

The next revision will probably happen in a few weeks, after
I've had time to consider the shape of the interface based on the
comments obtained about this version.

In the future, I intend to keep the release rate high in order to make
new code and network types accessible as fast as possible.
PerlShop PerlShop is an easy to use CGI shopping cart script written in perl. It is very close to free as the web page will explain.


What Biological sequence handling subroutines.
Version
Who jong@mrc-lmb.cam.ac.uk
Where ftp.mrc-cpe.cam.ac.uk /pub/jong/perl
What


What Getopt::Long
Version 2.3
Who jvromans@squirrel.nl (Johan Vromans)
Where http://www.perl.com/CPAN/authors/Johan_Vromans or CPAN
What
Version 2.3beta2 of module Getopt::Long is now available via CPAN. It
should soon appear in directory authors/Johan_Vromans as file
GetoptLong-2.3b2.tar.gz.

Module Getopt::Long implements an extended getopt function called
GetOptions(). This function implements the POSIX standard for command
line options, with GNU extensions, while still capable of handling
the traditional one-letter options.

The kit contains:

  README         -- Introductionary text
  GetoptLong.pm  -- version 2.3b2 of Getopt::Long (subroutine GetOptions)
  newgetopt.pl   -- version 1.15 of newgetopt.pl (subroutine NGetOpt)
  Makefile.PL    -- Makefile for installation
  skel.pl        -- Skeleton program to use Getopt::Long

The README document is attached to this message.

The best way to download from CPAN is to use a Web browser and point
it to http://www.perl.com/CPAN It will automagically be redirected to
a CPAN site in your neighborhood.
URL: http://www.perl.com/CPAN/authors/Johan_Vromans

New features in this version
----------------------------

* Support for single-letter command line options and bundling of these
  options.

---- README ----

Module Getopt::Long - extended processing of command line options
=================================================================

Module Getopt::Long implements an extended getopt function called
GetOptions(). This function implements the POSIX standard for command
line options, with GNU extensions, while still capable of handling
the traditional one-letter options.
In general, this means that command line options can have long names
instead of single letters, and are introduced with a double dash `--'.

Optionally, Getopt::Long can support the traditional bundling of
single-letter command line options.

Getopt::Long::GetOptions() comes with the Perl 5 distribution. It is
the successor of newgetopt.pl that came with Perl 4. It is fully
upward compatible. In fact, the Perl 5 version of newgetopt.pl is just
a wrapper around the module.

* Long option names

Major advantage of using long option names is that it is much easier
to memorize the option names. Using single-letter names one quickly
runs into the problem that there is no logical relationship between
the semantics of the selected option and its option letter.
Disadvantage is that it requires more typing. Getopt::Long provides
for option name abbreviation, so option names may be abbreviated to
uniqueness. Also, modern shells like Cornell's tcsh support option
name completion. As a rule of thumb, you can use abbreviations freely
while running commands interactively but always use the full names in
scripts.

Examples (POSIX):

    --long --width=80 --height=24

Extensions:

    -long (convenience) +width=80 (deprecated) -height 24 (traditional)

By default, long option names are case insensitive.

* Single-letter options and bundling

When single-letter options are requested, Getopt::Long allows the
option names to be bundled, e.g. "-abc" is equivalent to "-a -b -c".
In this case, long option names must be introduced with the POSIX "--"
introducer.

Examples:

    -lgAd (bundle) -xw 80 (bundle, w takes a value) -xw80 (same)

By default, single-letter option names are case sensitive.

* Flexibility:

  - options can have alternative names, using an alternative name
    will behave as if the primary name was used;
  - options can be negatable, e.g. "debug" will switch it on, while
    "nodebug" will switch it off.
  - options can set values, but also add values producing an array
    of values instead of a single scalar value.

* Options linkage

Using Getopt::Long gives the programmer ultimate control over the
command line options and how they must be handled:

  - by setting a global variable in the calling program;
  - by setting a specified variable;
  - by entering the option name and the value in an associative array
    (hash);
  - by calling a user-specified subroutine with the option name and
    the value as arguments;
  - combinations of the above.

* Customization:

A couple of configuration variables can be used to activate (or
de-activate) specific behavior:

  - $Getopt::Long::autoabbrev

        Allow option names to be abbreviated to uniqueness.
        Default is 1 unless environment variable POSIXLY_CORRECT
        has been set.

  - $Getopt::Long::getopt_compat

        Allow '+' to start options.
        Default is 1 unless environment variable POSIXLY_CORRECT
        has been set.

  - $Getopt::Long::order

        Whether non-options are allowed to be mixed with options.
        Default is $REQUIRE_ORDER if environment variable
        POSIXLY_CORRECT has been set, $PERMUTE otherwise.

        $PERMUTE means that

            -foo arg1 -bar arg2 arg3

        is equivalent to

            -foo -bar arg1 arg2 arg3

        (provided -foo does not take an argument value).

        If $Getopt::Long::order is $REQUIRE_ORDER, options processing
        terminates when the first non-option is encountered.

            -foo arg1 -bar arg2 arg3

        is equivalent to

            -foo -- arg1 -bar arg2 arg3

  - $Getopt::Long::bundling

        Setting this variable to a non-zero value will allow
        single-character options to be bundled. To distinguish bundles
        from long option names, long options must be introduced with
        "--" and single-character options (and bundles) with "-".

  - $Getopt::Long::ignorecase

        Ignore case when matching options. Default is 1. When bundling
        is in effect, case is ignored on single-character options only
        if $Getopt::Long::ignorecase is greater than 1.

  - $Getopt::Long::error

        Internal error flag. May be incremented from a call-back
        routine to cause options parsing to fail.

  - $Getopt::Long::debug

        Enable copious debugging output. Default is 0.

* Availability

The official version for module Getopt::Long comes with the Perl 5
distribution.
Newer versions will be made available on the Comprehensive Perl Archive
Network (CPAN), see "http://www.perl.com/CPAN/authors/Johan_Vromans".


What Perl/Tk (A Perl GUI)
Version
Who Nick.Ing-Simmons@tiuk.ti.com
Where CPAN
What
 Perl/Tk (also known as pTk or ptk) is a collection of modules and code that
 attempts to wed the easily configured Tk 4 widget toolkit to the powerful
 lexigraphic, dynamic memory, I/O, and object-oriented capabilities of Perl
 5. In other words, it is an interpreted scripting language for making widgets
 and programs with Graphical User Interfaces (GUI). (Examples of widget
 programs [not necessarily written in perl/Tk] include xterm, xclock,
 most web-browsers, etc.. They are programs with "GUI" interfaces of one
 sort or another and are subject to the effects of your window manager.)
 
 Perl/Tk is based on "Tk 4.0" the widget Toolkit originally associated with
 the Tcl (Tool command language) scripting language. However, Perl/Tk
 does not require any of the lexical features/idiosynchrocies of Tcl. Perl/Tk
 uses perl 5 syntax and grammar.
 
 Like perl, wish, and even tclsh; perl/Tk is most easily used on a Unix
 computer platform running X. Having said that, it is worth noting that
 things like Linux and FreeBSD mean that the micro-computer hardware
 crowd too can have access to the wonders of perl/Tk. Perl and Tcl/Tk have
 also been ported to non Unix operating systems, there is no reason to
 suppose it cannot be done with the perl/Tk code eventually as well.
 
 The perl/Tk package is still in beta phase and is being written primarily by
 Nick Ing-Simmons  at Texas
 Instruments in Northampton, England.
 
 The pTk code proper is an externally callable Tk toolkit (i.e. a re-write of
 the Tk 4.0 code that allows easier external linking & calling, especially by
 perl). Ptk can then be called from Perl 5 via the Tk.pm et al perl glue
 modules. Hence "ptk" does not necessarily refer to Perl Tk but could be taken
 to mean portable Tk - given a glue package to another language. The stated
 goal of the pTk code is to have its library usable from perl, Tcl, LISP, C++,
 python, etc.. It just so happens that present work is concentrating on perl.
 
 Historical note: "ptk" was known as "ntk" before about 11:30 EST 4 May
 1995.
 
 The perl/Tk language is itself further extensible via the perl 5 module
 mechanism. A number of composite widget extensions to the language have
 been written using perl modules.


What Array::PrintCols - print arrays of elements in alphabetically, vertically sorted columns.
Version 1.3
Who Alan K. Stebbens
Where www.engineering.ucsb.edu/~aks/perl/Array__PrintCols.shar hub.ucsb.edu/pub/prog/perl/Array-PrintCols-1.3.shar hub.ucsb.edu/pub/prog/perl/Array-PrintCols-1.3.tar.gz
What
Array::PrintCols, version 1.3, is a Perl 5 module which defines a
subroutine to print arrays of elements in alphabetically, vertically
sorted columns.  Optional arguments can be given to control either the
width or number of the columns, the total width of the output, and the
amount of indentation.

The module has embedded POD text with which man or HTML pages can be
created.

For detailed usage information, you can do:

    pod2man PrintCols.pm | nroff -man

The module is accompanied with a Makefile, this README, a test program
(test.pl), a reference test output file, and the GNU License, under
which this software is freely available.

The archives are available via:

    http://www.engineering.ucsb.edu/~aks/perl/Array__PrintCols.shar
    ftp://hub.ucsb.edu/pub/prog/perl/Array-PrintCols-1.3.shar
    ftp://hub.ucsb.edu/pub/prog/perl/Array-PrintCols-1.3.tar.gz

as well as the CPAN sites.  In particular, the California site is:

   California       ftp://ftp.cdrom.com/pub/perl/CPAN/

Contributions or improvements are welcome.


What 100+ Pages of WWW Perl Documentation
Who Tom Christiansen, tchrist@mox.perl.com
Where Download or see CPAN
What A postscript version of the web-related perl documentation. It is contiguously page-numbered for booklike printing. Each module's revision number appears prominently on each page (which is something new I just added to pod2man, actually). It includes the enclosed table of contents.

Page   Module                           Description
  1   CGI                              Simple Common Gateway Interface Class
 20   CGI_Lite                         Perl 5.0 module to process and decode WWW form

 27   CGI::Base                        HTTP Daemon Common Gateway Interface (CGI) Base Class
 31   CGI::BasePlus                    HTTP CGI Base Class with Handling of Multipart Forms
 32   CGI::Carp                        CGI routines for writing to the HTTPD (or other) error log
 34   CGI::Form                        Build Smart HTML Forms on Top of the CGI:: Modules
 49   CGI::MiniSvr                     Adds to CGI::Base the ability for a CGI script to become
 54   CGI::Request                     Parse client request via a CGI interface

 60   HTML::AsSubs                     functions that construct a HTML syntax tree
 61   HTML::Element                    Class for objects that represent HTML elements
 63   HTML::Entities decode            Expand HTML entites in a string
 64   HTML::FormatPS                   Format HTML as postscript
 66   HTML::FormatText                 Format HTML as text
 67   HTML::Formatter                  Base class for HTML formatters
 68   HTML::Parse parse_html           Parse HTML text

 69   HTTP::Date time2str, str2time    date conversion routines
 70   HTTP::Headers                    Class encapsulating HTTP Message headers
 72   HTTP::Message                    Class encapsulating HTTP messages
 73   HTTP::Request                    Class encapsulating HTTP Requests
 74   HTTP::Response                   Class encapsulating HTTP Responses
 76   HTTP::Status                     HTTP Status code processing

 78   LWP                              Library for WWW access in Perl
 80   LWP::Debug                       debug routines for the libwww-perl library
 82   LWP::IO                          Low level I/O capability
 83   LWP::MediaTypes guessMediaType   guess media type for a file or an URL.
 84   LWP::MemberMixin                 Member access mixin class
 85   LWP::Protocol                    Virtual base class for LWP protocols
 87   LWP::Simple get, head...         Procedural LWP interface
 89   LWP::Socket                      TCP/IP socket interface
 91   LWP::TkIO                        Tk I/O routines for the LWP library
 92   LWP::UserAgent                   A WWW UserAgent class

 95   MIME::Base64 encode_base64       Encode string using base64 encoding
 96   MIME::QuotedPrint encode_qp      Encode string using quoted-printable encoding

 97   URI::Escape uri_escape           Escape unsafe characters
 98   URI::URL                         Uniform Resource Locators (absolute and relative)

103   WWW::RobotsRules                 Parse robots.txt files


What MHonArc is a Perl mail-to-HTML Converter
Version 1.2
Who Earl Hood, ehood@convex.com
Where Web Page
What
MHonArc is a Perl mail-to-HTML
converter. MHonArc provides HTML mail archiving with index, mail thread
linking, etc; plus other capabilities including full support for MIME,
as defined in RFC 1521, and powerful user customization features.

Some of the changes from v1.1:

    o Full MIME processing under Perl 5,
    o Dynamic index generation,
    o Multiple indexes support,
    o More customization features,
    o Bug fixes,
    o And much more.