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