Ветвление с созданием нового процесса, Возвращает PID дочернего процесса в родительском процессе и 0 - в дочернем. В случай ошибки (например; при недостаточном объеме памяти для ветвления) возвращает undef и устанавливает в качестве значения переменной $! соответствующее сообщение об ошибке.
Если родительский и дочерний процессы должны вступить во взаимодействие друг с другом после ветвления, они могут это осуществить с помощью канала или через разделяемую память. Для передачи простых сообщений родительский и дочерний Процессы могут посылать друг другу сигналы с использованием функции kill(), указывая идентификаторы процессов. Родительский процесс получает PID дочернего процесса из кода результата функции fork(), а дочерний может получить PID родительского процесса, вызвав функцию getppid(). Процесс может установить собственный PID, определив значение специальной переменной $$.
$pid = getppid();
Возвращает PID родительского процесса. Каждый сценарий Perl имеет родительский процесс, и даже если он запущен из командной строки (его родительским процессом является процесс командного интерпретатора).
Переменная $$ содержит текущий PID процесса. Значение этой переменной можно читать, но не изменять. Сигнальная функция kill() будет рассматриваться далее. В случае необходимости дочерний процесс может сам вызвать функцию fork() , создавая собственный дочерний процесс. Первоначальный родительский объект также может снова вызвать функцию forк(), как и все его потомки. Таким образом, сценарии Perl могут создавать совокупность процессов (которые не должны конфликтовать друг с другом). Если не будет выполнено некоторое специальное действие, каждый член этой совокупности будет принадлежать к одной и той же группе процессов.