Per testare un programma CGI dalla riga di comando, si falsifica l'ambiente che il server crea per il programma. CGI.pm ha una modalità offline speciale, ma spesso trovo più facile non usarla a causa della configurazione extra che devo fare per tutto il resto che i miei programmi normalmente si aspettano.
seconda dell'implementazione del vostro script, questo comporta la definizione di molte variabili d'ambiente, che si può fare da uno script wrapper che finge di essere il server:
#!/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
Se stai facendo questo per un POST richiesta, l'ambiente è un po 'diverso ed è necessario fornire i dati POST sullo standard input:
#!/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
è possibile effettuare questo sofisticato come avete bisogno e ogni volta che si desidera testare il programma, si cambia il backup dei dati nei file query_string o post_data . Se non vuoi farlo in uno script di shell, è altrettanto facile creare uno script Perl wrapper.
fonte
2010-02-08 20:48:21
Per riferimento, il metodo di input ambiente variabile/standard funziona con qualsiasi applicazione CGI , Perl o in altro modo. – fennec
Questo consiglio manca un po ', per non parlare del suo esempio, la riga di comando non ha speranza di funzionare. –