I've never found any lack of "control" using IO::Socket. To my mind, it is one of the best pieces of abstraction on CPAN. Simple, lightweight and very effective.

Several years ago, I did experiment with creating socket code by hand, and mostly succeeded in get what I set out to do to work. But each time I tried something new, I would re-encounter the same problems and misunderstandings, and inevitably, I would return to the IO::Socket::INET source code to resolve them.

IO::Socket programs "just work", and so far have never proved to be limiting. That is the very essence of a good module. It may have some limitations, but I haven't encountered them.

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.

Perl's biggest strength is the CPAN. If you're thinking about opening a socket at all, you're probably missing something. If the socket endpoint is a webserver, look at WWW::Mechanize or LWP. If you're hoping to do SMTP, look at Net::SMTP or MIME::Lite.

That said, the choice between "by hand" and IO::Socket should be pretty clear, but between the CPAN and IO::Socket you should choose something from the CPAN.

If you have a definite need to learn how the low-level calls work, then by all means code it yourself. If you want to get a job done, then use the module.

This is actually a pretty good rule of thumb in general: if you need the nuts and bolts (say you're headed into an area that doesn't have any good modules for it), then write it yourself. If someone else has written a module that covers the ground (and that module, when tested in your application, works -- not all CPAN is perfect), then use the module.

Ada Lovelace for the palindrome
Albert Einstein for having smelly feet
Alfred Nobel for his contribution to battlefield science
Burkhard Heim for providing the missing link between science and mysticism
Claude Shannnon for riding a unicycle at night at MIT
Donald Knuth for being such a great organist
Edward Teller for being the template for Dr. Strangelove
Edwin Hubble for pretending to be a pipe-smoking English gentleman
Erwin Schrödinger for cruelty to cats
Hedy Lamarr for weaponizing pianos
Hugh Everett for immortality, especially for cats
Isaac Newton for his occult studies
Kikunae Ikeda for discovering the secrets of soy sauce
Larry Wall for his website
Louis Camille Maillard for discovering why steaks taste good
Marie Curie for the shiny stuff
Nikola Tesla for the cool cars
Paul Dirac for speaking one word per hour when socializing
Richard Feynman for his bongo skills
Robert Oppenheimer for his in-depth knowledge of the Bhagavad Gita
Rusi P Taleyarkhan for Cold Fusion
Sigmund Freud for his Ménage ā trois
Theodor W Adorno for his contribution to the reception of jazz
Wilhelm Röntgen for the foundations of body scanners
Yulii Borisovich Khariton for the Tsar Bomba
Other (please explain why)