The following module was proposed for inclusion in the Module List:
modid: Net::Gopher
DSLIP: adphg
description: The Perl Gopher/Gopher+ client API.
userid: WGDAVIS (William G. Davis)
chapterid: 5 (Networking_Devices_IPC)
communities:
similar:
LWP::Protocol::gopher
rationale:
Back in the heyday of the Gopher protocol, much Gopher software was
written for Perl. Unfortunately, that was in the pre-95 era and,
more specifically, in the pre-Perl 5 era. Thus, much of this code is
undocumented, inefficient, archaic, and not even technically in the
form of a module (most are *.pl files meant to be require()'ed).
Furthermore, almost none of the code actually supports Gopher+, the
enhancements to the Gopher protocol.
The more recent versions of the libwww-perl (the ones that support
HTTP 1.1) do at least (partially) support the Gopher protocol. But
there are problems with it; as far as Gopher goes, LWP is extremely
primitive.
First, LWP doesn't support Gopher+, only Gopher.
Second, it converts Gopher menus and gopher search types to HTML
(Netscape, Mozilla, and IE do this as well). While I understand that
LWP is a Web library is this conversion is intended to help those
writing web clients who happen upon a gopher:// URL, it makes it
extremely difficult to work with for those who intend only to
communicate with Gopher servers since Gopherspace is an almost
entirely HTML-free realm and this conversion then requires the user
to use an HTML parser.
Third, LWP doesn't provide any way to make sure that a file
downloaded was completely downloaded (checking for the period on a
line by itself).
Fourth, LWP only enables communication with Gopher servers via URL;
you give LWP a gopher:// URL and it does the rest. While this again
may be helpful for people writing WWW clients, this is not method of
communication described in RFC 1436 : The Internet Gopher Protocol
(which in fact doesn't even once mention URIs or URLs), and it's
extremely limiting.
What I am in the process of doing with Net::Gopher is creating a
modern, object-oriented, Gopher/Gopher+ client API for Perl that
will enable Perl hackers to easily communicate with both Gopher as
well as Gopher+ servers from their Perl scripts.
So far, Net::Gopher's interface mimics that of other Net::* modules
such as Net::FTP and Net::SMTP, and should be far more familiar and
comfortable than LWP to those used to the Gopher protocol and early
pre-Web gopher clients. Net::Gopher corrects all of the problems
which I enumerated above, and provides a wealth of new functionality
including a Gopher menu parser to parse gopher menus and return the
item type, selector, host, and port of each item in the form of a
data structure.
enteredby: WGDAVIS (William G. Davis)
enteredon: Sun Jul 6 06:40:21 2003 GMT
The resulting entry would be:
Net::
::Gopher adphg The Perl Gopher/Gopher+ client API. WGDAVIS
Thanks for registering,
--
The PAUSE
PS: The following links are only valid for module list maintainers:
Registration form with editing capabilities:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=bc200000_6f72fb2993e380b6&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=bc200000_6f72fb2993e380b6&SUBMIT_pause99_add_mod_insertit=1