Чтобы протестировать программу CGI из командной строки, вы имитируете среду, которую сервер создает для программы. CGI.pm имеет специальный автономный режим, но часто мне проще его не использовать из-за дополнительной настройки, которую мне нужно сделать для всего остального, что обычно ожидают мои программы.
В зависимости от реализации вашего сценария это включает установку множества переменных среды, что вы можете сделать из сценария-оболочки, который притворяется сервером:
#!/bin/bash
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=GET
perl program.cgi
Если вы делаете это для запроса POST, среда немного отличается, и вам необходимо предоставить данные POST для стандартного ввода:
#!/bin/bash
export CONTENT_LENGTH=$(perl -e "print -s q/post_data/");
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=...
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=POST
perl program.cgi < post_data
Вы можете сделать это по своему усмотрению, и каждый раз, когда вы хотите протестировать программу, вы изменяете данные в файлах query_string или post_data. Если вы не хотите делать это в сценарии оболочки, то так же просто создать сценарий Perl-оболочки.