Исключение из этого правила возникает, когда для файла сценария установлен бит setuid: программа работает с EUID пользователя, которому принадлежит файл сценария, например, это может быть конвергентный биллинг оператора связи, и с реальным UID пользователя, который запустил ее на выполнение. В этом случае в программе можно поменять местами действующий и реальный идентификаторы пользователя с помощью оператора присваивания.
($<,$>) = ($>,$<);
Это дает возможность выполнять в программах с установленным битом setuid прямое и обратное переключение между реальными и действующими идентификаторами пользователя. Однако в программе с установленным битом setuid можно отказаться от такой возможности (прямого и обратного переключения), выполнив следующее простое присваивание реальному идентификатору пользователя действующего идентификатора пользователя. После этого в такой программе больше не будет разрешено изменять действующий идентификатор пользователя EUID.
$< = $>;
Описанная выше операция переключения между реальными и действующими идентификаторами пользователя применима только к тем версиям UNIX, которые поддерживают вызов setreuid () библиотеки С. Кроме того, бит setuid действует только в том случае, если интерпретатор Perl настроен на его распознавание и учет.
Аналогичное различие существует между реальным и действующим идентификаторами группы. Суперпользователь вправе указать вместо действующего идентификатора группы любой другой идентификатор группы. Все последующие операции будут происходить с правами нового действующего идентификатора группы.