zoukankan      html  css  js  c++  java
  • perl-cgi命令行调试

    来源:

    http://www.cnblogs.com/itech/archive/2012/09/23/2698838.html

    参考:
     http://docstore.mik.ua/orelly/linux/cgi/ch15_03.htm 

     http://stackoverflow.com/questions/2224158/how-can-i-send-post-and-get-data-to-a-perl-cgi-script-via-the-command-line
     http://search.cpan.org/~lds/CGI.pm-3.20/CGI.pm#DEBUGGING 

    一 一般地我们可以使用以下方法来检查cgi脚本的错误:
    1)使用-cwT来检查cgi脚本的语法,警告。例如perl -wcT your.cgi.
    2)在命令行执行cgi:./calendar.cgi month=jan year=2001.

    3)在命令行执行时可以交互式offline地输入cgi需要的参数, 此时cgi脚本中需要加入-debug参数 use CGI qw(-debug);,然后执行./calendar 且输入 month=jan year=2001,最后退出输入执行(use Ctrl-D on Unix or Mac; use Ctrl-Z on Windows) 。
    4)将cgi放到webserver,然后通过webbrowser来对其测试,此时可以使用print来打印变量的值到html来帮助调试。也可以使用use CGI::Carp qw(warningsToBrowser fatalsToBrowser);将警告和错误打印到html。
    5)检查webserver的log:tail -f /usr/local/apache/logs/error_log.

     

    二 命令行执行cgi脚本的实例

    1)

    通过post方式来调用cgi脚本:

    $ echo -n 'a=b;c=d' | REQUEST_METHOD=POST CONTENT_LENGTH=999 perl index.cgi

    通过get方式来调用cgi脚本:

    $ perl index.cgi 'a=b;c=d'

    2)

    For example, with the following program (notice -debug in the arguments to use CGI)

    #! /usr/bin/perl

    use warnings;
    use strict;

    use CGI qw/ :standard -debug /;

    print "Content-type: text/plain ",
          map { $_ . " => " . param($_) . " " }
          param;

    you feed it parameters on the command line:

    $ ./prog.cgi foo=bar baz=quux 
    Content-type: text/plain  foo => bar baz => quux

    You can also do so via the standard input:

    $ ./prog.cgi (offline mode: enter name=value pairs on standard input; press ^D or ^Z when done) foo=bar baz=quux ^D 
    Content-type: text/plain foo => bar baz => quux 

    3)

    当用get方式时,设置环境变量 QUERY_STRING (实例在windows上)

    set QUERY_STRING=recipient=John@Doe.com&Fullname=M+Name
    perl -w scriptname.cgi

    当用post方式时,需要将query_string的内容输入到临时文件testinput.txt,例如

    echo recipient=John@Doe.com&Fullname=M+Name >testinput.txt

    perl -w scriptname.cgi < testinput.txt

    三 来自perl cgi man page的帮助 

    If you are running the script from the command line or in the perl debugger, you can pass the script a list of keywords or parameter=value pairs on the command line or from standard input (you don't have to worry about tricking your script into reading from environment variables). You can pass keywords like this:

        your_script.pl keyword1 keyword2 keyword3

    or this:

       your_script.pl keyword1+keyword2+keyword3

    or this:

        your_script.pl name1=value1 name2=value2

    or this:

        your_script.pl name1=value1&name2=value2

    To turn off this feature, use the -no_debug pragma.

    To test the POST method, you may enable full debugging with the -debug pragma. This will allow you to feed newline-delimited name=value pairs to the script on standard input.

    When debugging, you can use quotes and backslashes to escape characters in the familiar shell manner, letting you place spaces and other funny characters in your parameter=value pairs:

       your_script.pl "name1='I am a long value'" "name2=two words"

    Finally, you can set the path info for the script by prefixing the first name/value parameter with the path followed by a question mark (?):

        your_script.pl /your/path/here?name1=value1&name2=value2 

  • 相关阅读:
    uva 1511 最小生成树
    百度之星2017初赛A-1006-度度熊的01世界
    工作5年总结-总结这两年在阳光的日子
    在visual studio中查看源代码
    根据C#编程经验思考编程核心
    项目的可维护可持续性思考
    java学习
    What is ASP.NET SignalR
    WCF 和 ASP.NET Web API
    wcf服务
  • 原文地址:https://www.cnblogs.com/spriteflk/p/5736028.html
Copyright © 2011-2022 走看看