Потенциально опасные переменные могут использоваться внутри сценария, но Perl запрещает их использование любым способом, который мог бы повлиять на код, что находится за пределами сценария. Разрешается выполнять числовые расчеты с данными, полученными из сокета, но запрещается передавать эти данные в команду system(). К потенциально опасным данным относится следующее: содержимое хеша %ENV, данные, считанные из командной строки, данные, считанные из сокета или дескриптора файла, анные, полученные из оператора обратных одинарных кавычек, информация региональной установки, результаты выполнения функций readdir () и readlink (), значения поля gecos файла паролей, полученные из функций getpw*. поскольку это поле может быть установлено пользователями.
Потенциально опасные данные не могут использоваться в тех функциях, результаты которых распространяются за пределы сценария; в ином случае интерпретатор Perl вызывает функцию die с сообщением об ошибке. К этим операциям относится следующее: форма вызова функций system () или ехес () с одним параметром, обратные одинарные кавычки, функция eval (), открытие файла для записи, открытие канала, функция globl и оператор glob (<*>), функция unlink (), функция unmasк (), функция kill ().
Форма вызова функций system() и ехес () со списком параметров не подвергается проверке на отсутствие потенциально опасных данных, поскольку выполняемые команды не передаются командному интерпретатору. Аналогичным образом интерпретатор Perl разрешает открыть для чтения файл, имя которого указано с использованием потенциально опасных данных; открытие такого файла для записи запрещено.