What it is: modules Net::Gen, Net::Inet, Net::TCP, Net::UDP, and Net::UNIX. Net::Gen is not a good name, I know that, but what's in it really belongs in Socket, I think. In any case, I'm open to votes for a better name. What's different from other offerings: Layering keeps PF_INET things in Inet, and only socket-generic stuff is in Gen. Friendly {g,s}etsockopt. A TIESCALAR interface for really simple socket communications. Properly handles connects to hosts with multiple addresses as long as gethostbyname() returns more than one address. (RFC 1123) What's still missing: Support for non-blocking sockets is untested at best. The select, fhvec, ioctl, and fcntl methods are crude hacks. A proper set of regression & verification tests. Proper handling of timeout options. Finished integration with 5.003_13 & later features. Probably several other things I won't have missed (yet). The .pm files themselves are pod-ified (somewhat), with a catalogue of the methods. I've found them to be most readable after something like pod/pod2man ext/Net/Gen/Gen.pm | nroff -man | less -is Your mileage may vary. I'm not a tech. writer, nor do I usually play one on the net. The documentation could still use a lot of work, I'm sure. Making it work requires perl 5.003_93 or later. A simple test script: #!/usr/bin/perl use Net::TCP; $f = new Net::TCP 0, 'finger'; die "Can't establish finger socket: $!\n" unless $f; put $f "-s\n"; $f->shutdown(1); print $line while defined($line = getline $f); undef $f; die "Can't tie to finger socket: $!\n" unless tie $f,'Net::TCP',0,'finger'; $f = "-s\n"; tied($f)->shutdown(1); print $line while (defined $line=$f); untie $f; Should be the same (on most BSD-ish systems, anyway) as finger ; finger to the shell. Anyway, bug reports & feature requests to me (spider@Orb.Nashua.NH.US).