4) Выборка имени пользователя и имени хоста почтового ящика. Выполняется обработка параметров командной строки для получения имен пользователя и хоста POP3 http://nkvd.pro/ . Глобальная переменная $entity содержит объект MIME::Entity, интерпретированный в самую последнюю очередь. Эта переменная объявлена как глобальная, чтобы к ней можно было обратиться в блоке end {} и вызвать метод purge() соответствующего объекта в том случае, если пользователь преждевременно выйдет из программы. В результате этого с диска будут удалены все временные файлы. По этим же соображениям перехватывается сигнал int для обеспечения корректного выхода, если пользователь нажмет клавишу прерывания.
5) Регистрация на сервере, где находится почтовый ящик. Модуль PopParser.рm определяет новый подкласс класса Net::РОРЗ, который наследует свои правила поведения от базового класса, но возвращает объекты mime::Entity, интерпретированные с помощью метода get(), а не просто необработанный текст сообщения. Создается новый объект PopParser, подключенный к хосту почтового ящика. В случае успешного выполнения этой операции вызывается функция get_passwd() (импортированная из модуля PromptUtil) для получения пароля учетной записи пользователя.
Затем выполняется проверка подлинности пользователя на удаленном хосте. Заранее не известно, поддерживает ли сервер метод аутентификации арор или менее защищенный метод аутентификации с передачей пароля в виде открытого текста, поэтому осуществляется попытка применить оба метода. Если вызов метода арор() завершается аварийно, предпринимается попытка выполнить метод login( ) . Если и эта попытка оканчивается неудачей, вызывается функция die() с сообщением об ошибке.
В случае успешной регистрации выводится число сообщений, возвращенных методами арор() или login(). К числу сообщений прибавляется 0 для преобразования кода результата 0Е0 в более удобное для восприятия целое число.