У меня была недавняя проблема, когда Tie::File оказался лучшим ответом, с которым я мог работать для программы Perl. Сейчас я готов работать с CGI, и мне нужно спросить: существуют ли модули Perl, которые нельзя использовать в CGI, особенно Tie::File? Если есть какие-то сложности, есть ли способы их примирить?
Существуют ли модули Perl, которые нельзя использовать в CGI?
Ответы:
CGI — это, по сути, просто программа, которая читает запрос на STDIN и выдает заголовок + HTML на STDOUT. В этом нет ничего особенного: нет модулей, которые вы не смогли бы использовать, если сильно постараетесь.
Вы могли бы даже заставить графические (например, GTK) работать с достаточной болью. Не то чтобы ты хотел. Если вы не являетесь сторонним поставщиком, для которого я имел неудовольствие заставить это работать.
Но помните, что несколько копий вашей программы могут работать одновременно (по одной на одновременный веб-запрос), поэтому, если вы используете плоские файлы, вам придется иметь дело с блокировкой.
Убедитесь, что ваш файл данных и доступен для чтения и записи вашим CGI-процессом. Я добавляю этот ответ, потому что это привело к очень странной ошибке. У меня был сценарий, который не запускался из CGI. На самом деле CGI мог нормально прочитать содержимое данных, но Tie::File потерпел неудачу (хотя он работал нормально, если я вызывал его из командной строки). Оказывается, были установлены разрешения -rw-rw-r--, что означает «доступно для чтения всем», но только мой пользователь и группа могли писать в него. Поскольку у процесса CGI не было разрешений на запись, Tie::File не удалось выполнить в CGI.