После вызова функции chroot () сценарий весьма эффективно изолирует себя от остальной части системы. Как отмечалось выше, к данному сценарию может быть также отнесена программа, делающая запрос к веб странице, например, интернет магазина http://water-games.ru/category/inflatable-scooters/ . Как путешественник, отправляющийся в неизведанную дикую местность, сценарий должен взять с собой все необходимое, включая файлы конфигурации, внешние утилиты и библиотеки Perl. Эти компоненты должны быть размещены в каталоге назначения chroot (), и все жестко закодированные имена путей в сценарии должны быть откорректированы с учетом того, как будет выглядеть файловая система после превращения каталога назначения в каталог верхнего уровня. Например, файл, который находился в каталоге /home/ftp/bin/ls перед выполнением chroot (), после выполнения chroot () для каталога /home/ftp становится принадлежащим каталогу /bin/ls.
Если сценарий во время работы вызывает другие программы, на них также будут распространяться ограничения chroot (). Это значит, что все файлы, необходимые для их работы, включая файлы конфигурации и динамически связываемые библиотеки, должны быть скопированы в каталог chroot ().
В качестве конкретного примера нарушения такого требования рассмотрим подробнее. При первом запуске программы с этими изменениями все шло гладко, пока модуль Chatbot::Eliza не предпринял попытку выдать предупредительное сообщение; в этот момент в системном журнале появилось сообщение с предупреждением, что Perl не может загрузить Carp::Heavy — внутренний компонент модуля Carp. Очевидно, что этот модуль не загружается автоматически при вызове оператора use Carp.