Функция getservbyname() преобразовывает символическое имя службы, такое как "echo" в номер порта, который может быть передан функции sockaddr_in(). Функция принимает два параметра, соответствующие имени службы и требуемому протоколу. Необходимость указания в качестве дополнительного параметра имени протокола связана с тем, что некоторые службы, включая echo, реализованы и в версии UDP, и в версии TCP, и нет никакой гарантии, что обе эти версии не используют один и тот же номер порта, хотя почти всегда так оно и происходит.
В скалярном контексте функция getservbyname() возвращает номер порта службы или значение undef, если номер порта не известен. В контексте списка функция возвращает четырехэлементный список из канонического имени службы, разделенного пробелами списка псевдонимов, если они имеют номера порта и номера протокола. Если служба не известна, функция возвращает пустой список.
Функция getservbyport() выполняет обратную операцию, преобразовывая номер порта в ответствующее имя службы. Ее поведение в скалярном контексте и контексте списка полностью аналогично функции getservbyname().
Другие источники сетевой информации. Кроме функции gethostbyname() и аналогичных функций, для непосредственного доступа ко многим общедоступным базам данных сетевой информации могут применяться специализированные дополнительные модули. Все эти модули могут быть получены из архива CPAN.
Модуль Net::DNS. Этот модуль предоставляет гораздо больший контроль над тем, как происходит преобразование имен хостов с использованием системы доменных имен. Кроме функциональных средств, предоставляемых функциями gethostbyname() и gethostbyaddr(), модуль Net::DNS позволяет выполнить выборку и последовательно перебрать все хосты в домене, получить адрес электронной почты сетевого администратора,- ответственного за домен, и провести поиск компьютера, ответственного за получение электронной почты для домена (так называемый промежуточный сервер электронной почты или MX - mail exchanger).