Зачем вам вообще их дезинфицировать? Какой урон будет, если у пользователя вашего скрипта есть VISUAL="rm -f"
и РЕДАКТОР для чего-то еще странного? Вы будете проверять, что операция редактора прошла успешно, что файл был открыт и что его содержимое имело смысл после редактирования, прежде чем вы сделали что-нибудь опасное. Но если пользователь может только повредить свои собственные файлы (вы не используете систему, в которой они могут повредить ваши файлы, не так ли?), Тогда нет большой необходимости их дезинфекции. Предоставление дефолта разумно; местные обстоятельства диктуют, является ли nano
лучшим выбором, чем, скажем, vim
.
Если пользователь не может повредить ваши вещи, злоупотребляя VISUAL и РЕДАКТОРОМ, то я бы не стал сильно беспокоиться о том, что они решили повредить свои вещи.
Если вы пишете что-то, что будет работать с повышенными привилегиями - например, с привилегиями SetUID или SetGID - тогда вам придется побеспокоиться об этом. (В коде Perl отсутствуют проверки, которые являются более фундаментальными, чем беспокойство по поводу использования редактора. О, но это use autodie;
означает, что скрипт автоматически прерывает работу при ошибках. Для меня это немного радикально. Но это вероятно, извиняет вас - хотя я отмечаю, что он не обрабатывает system
или exec
, если у вас нет use autodie qw(:all);
)