Pour tester un programme CGI à partir de la ligne de commande, vous simulez l'environnement créé par le serveur pour le programme. CGI.pm a un mode hors ligne spécial, mais souvent je trouve qu'il est plus facile de ne pas l'utiliser en raison de la configuration supplémentaire que j'ai besoin de faire pour tout ce que mes programmes attendent généralement.
En fonction de la mise en œuvre de votre script, cela implique la définition de variables d'environnement, que vous pouvez faire à partir d'un script d'emballage qui prétend être le serveur:
#!/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
Si vous faites cela pour un POST demande, l'environnement est légèrement différent et vous devez fournir les données POST sur l'entrée standard:
#!/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
vous pouvez en faire autant de fantaisie que vous avez besoin et à chaque fois que vous voulez tester le programme, vous modifiez des données dans les fichiers query_string ou post_data . Si vous ne voulez pas faire cela dans un script shell, il est tout aussi facile de créer un script Perl wrapper.
Pour référence, l'approche de l'environnement variable/entrée standard fonctionne avec toute application CGI , Perl ou autre. – fennec
Ce conseil est manquant un peu, pour ne pas mentionner que l'exemple de ligne de commande n'a aucun espoir de travailler. –