Строки 16-19. Дочерний процесс копирует данные из сокета в стандартное устройство вывода. В дочернем процессе вызывается подпрограмма host_to_user () для копирования данных из сокета в стандартное устройство вывода. Эта подпрограмма выполняет возврат, когда удаленный хост закрывает сокет. После этого не нужно выполнять каких-либо специальных действий, достаточно только отправить предупреждающее сообщение о том, что удаленный хост закрыл соединение. Программа разрешает нормально выйти из сценария и позволяет операционной системе выработать сообщение chld.
Строки 20-26. Подпрограмма user_to_host(). Эта подпрограмма обеспечивает копирование строк из стандартного устройства ввода в сокет. В цикле выполняется чтение строк из стандартного устройства ввода, удаление символа новой строки, а затем вывод строки в сокет с добавлением в конце символов CRLF. После закрытия стандартного устройства ввода выполняется возврат.
Строки 27-34. Подпрограмма host_to_user(). Эта подпрограмма представляет собой почти полную копию предыдущей. Единственное отличие состоит в том, что перед чтением из сокета глобальная переменная разделителя входных записей $/ устанавливается равной crlf. Обратите внимание, что в этом случае нет смысла локализовать значение переменной $/, поскольку изменения, сделанные в дочернем процессе, не влияют на родительский процесс. После чтения последней строки из сокета выполняется возврат.