亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

perl的cgi高級編程介紹

2020-10-31 15:18:46
字體:
供稿:網(wǎng)友

一 CGI.pm中的方法(routines)調(diào)用

1. CGI.pm實(shí)現(xiàn)了兩種使用方法,分別是面向?qū)ο蟮姆绞胶蛡鹘y(tǒng)的perlmodule方法的方式。
面向?qū)ο蟮姆绞剑?/P>

復(fù)制代碼 代碼如下:

#!/usr/local/bin/perl -w
use CGI;   # load CGI routines
$q = CGI->new;                        # create new CGI object
print $q->header,                    # create the HTTP header
    $q->start_html('hello world'), # start the HTML
    $q->h1('hello world'),         # level 1 header
    $q->end_html;                  # end the HTML

傳統(tǒng)的module方法的方式:

復(fù)制代碼 代碼如下:

#!/usr/local/bin/perl
use CGI qw/:standard/;           # load standard CGI routines
print header,                    # create the HTTP header
     start_html('hello world'), # start the HTML
     h1('hello world'),         # level 1 header
     end_html;                  # end the HTML


2. CGI.pm中的方法。

CGI.pm中的方法,通常有很多的參數(shù),所以一般我們使用命名參數(shù)的方式來調(diào)用,例如:
復(fù)制代碼 代碼如下:

print $q->header(-type=>'image/gif',-expires=>'+3d');

命名參數(shù)的值可以為scalar或array reference類型,例如:
復(fù)制代碼 代碼如下:

$q->param(-name=>'veggie',-value=>'tomato');
$q->param(-name=>'veggie',-value=>['tomato','tomahto','potato','potahto']);


3. CGI.pm中的html元素(html shortcuts)方法

所有的html的元素(例如h1,br等)在CGI.pm中都有對應(yīng)的方法,這些方法根據(jù)需要動態(tài)的生成,且都包含2個(gè)參數(shù),第一個(gè)參數(shù)為hash類型,對應(yīng)html元素的屬性,第二個(gè)參數(shù)的string類型,對應(yīng)html元素的內(nèi)容。例如html中的h1對應(yīng)的方法為h1( ):
Code              Generated HTML
----                 --------------
h1()                <h1>
h1('some','contents');             <h1>some contents</h1>
h1({-align=>left});                  <h1 align="LEFT">
h1({-align=>left},'contents'); <h1 align="LEFT">contents</h1>
有時(shí)你想自己處理元素的開始和結(jié)尾,則可以使用start_tag_name和end_tag_name,例如
print start_h1,'Level 1 Header',end_h1;
有的時(shí)候start和end方法沒有被自動生成,需要顯示的指定,例如:
use CGI qw/:standard *table start_ul/;
用來自動生成start_table,end_table,start_ul和end_ul方法。

另一個(gè)實(shí)例:

復(fù)制代碼 代碼如下:

print a({-href=>'fred.html',-target=>'_new'}, "Open a new frame");
<a href="fred.html",target="_new">Open a new frame</a>


二 CGI.pm中獲取cgi的參數(shù)

@names = $query->param        #get all params
@values = $query->param('foo'); #get param foo as list            
$value = $query->param('foo'); #get param foo as scalar
param()獲取參數(shù)的結(jié)果可以為scalar或array類型,例如當(dāng)參數(shù)的結(jié)果來自多選的scrollinglist的時(shí)候就為array類型。如果參數(shù)的值在querystring中沒有給定("name1=&name2="),param()將返回emptystring。如果參數(shù)在querystring中根本不存在,則param()則返回undef或emptylist。當(dāng)參數(shù)為多個(gè)值時(shí)querystring中寫法為var1=value1&var1=value2&var1=value3.

三 header and start_html
1. header指定html的header,例如

復(fù)制代碼 代碼如下:

print header;   # 返回默認(rèn)的type:text/html
print header('image/gif'); #設(shè)定type為:image/gif      
print header('text/html','204 No response');
$cookie1 = $q->cookie(-name=>'riddle_name', -value=>"The Sphynx's Question");
$cookie2 = $q->cookie(-name=>'answers', -value=>/%answers);
print header(-type=>'image/gif',
    -nph=>1,
    -status=>'402 Payment required',
    -expires=>'+3d',
     -cookie  => [$cookie1,$cookie2] ,
    -charset=>'utf-7',
    -attachment=>'foo.gif',
    -Cost=>'$2.00');

其中-type,-status,-expires,-cookie為可以設(shè)別的參數(shù),其他的命名參數(shù)都被轉(zhuǎn)化為html header屬性。
 -expires的值可以為:
   +30s    30 seconds from now
   +10m    ten minutes from now
   +1h     one hour from now
   -1d     yesterday (i.e. "ASAP!")
   now     immediately
   +3M     in three months
   +10y    in ten years time
   Thursday, 25-Apr-1999 00:40:33 GMT  at the indicated time & date
 2. start_html 創(chuàng)建頁面的頂層元素<html><header</header><body>
 例如:

復(fù)制代碼 代碼如下:

print start_html(-title=>'Secrets of the Pyramids',
   -author=>'fred@jbxue.org',
   -base=>'true',
   -target=>'_blank',
   -meta=>{'keywords'=>'pharaoh secret mummy',
           'copyright'=>'copyright 1996 King Tut'},
   -style=>{'src'=>'/styles/style1.css'},
   -BGCOLOR=>'blue');
 

或者:

復(fù)制代碼 代碼如下:

 print start_html(-head=>[
           Link({-rel=>'shortcut icon',href=>'favicon.ico'}),
           meta({-http_equiv => 'Content-Type',-content=> 'text/html'})
           ]
           );

在header中加入javascript的例子:

復(fù)制代碼 代碼如下:

   $query = CGI->new;
       print header;
       $JSCRIPT=<<END;
       // Ask a silly question
       function riddle_me_this() {
          var r = prompt("What walks on four legs in the morning, " +
                        "two legs in the afternoon, " +
                        "and three legs in the evening?");
          response(r);
       }
       // Get a silly answer
       function response(answer) {
          if (answer == "man")
             alert("Right you are!");
          else
             alert("Wrong!  Guess again.");
       }
       END
       print start_html(-title=>'The Riddle of the Sphinx',
      -script=>$JSCRIPT);
       print $q->start_html(-title=>'The Riddle of the Sphinx',
-script=>{-type=>'JAVASCRIPT',
          -src=>'/javascript/sphinx.js'}
);
      print $q->start_html(-title=>'The Riddle of the Sphinx',
 -script=>[
           { -type => 'text/javascript',
             -src      => '/javascript/utilities10.js'
           },
           { -type => 'text/javascript',
             -src      => '/javascript/utilities11.js'
           },
           { -type => 'text/jscript',
             -src      => '/javascript/utilities12.js'
           },
           { -type => 'text/ecmascript',
             -src      => '/javascript/utilities219.js'
           }
        ]
    );

在header中使用css的例子:
復(fù)制代碼 代碼如下:

  use CGI qw/:standard :html3/;
     #here's a stylesheet incorporated directly into the page
     $newStyle=<<END;
     <!--
     P.Tip {
         margin-right: 50pt;
         margin-left: 50pt;
         color: red;
     }
     P.Alert {
         font-size: 30pt;
         font-family: sans-serif;
       color: red;
     }
     -->
     END
     print header();
     print start_html( -title=>'CGI with Style',
                       -style=>{-src=>'http://www.49028c.com/style/st1.css',
      -code=>$newStyle}
                      );
     print h1('CGI with Style'),
           p({-class=>'Tip'},
             "Better read the cascading style sheet spec before playing with this!"),
           span({-style=>'color: magenta'},
                "Look Mom, no hands!",
                p(),
                "Whooo wee!"
                );
     print end_html;

四 url
  

復(fù)制代碼 代碼如下:

  $full_url      = url();  #  http://your.host.com/path/to/script.cgi
     $full_url      = url(-full=>1);  # http://your.host.com/path/to/script.cgi
     $relative_url  = url(-relative=>1); #script.cgi
     $absolute_url  = url(-absolute=>1); #path/to/script.cgi
     $url_with_path = url(-path_info=>1);
     $url_with_path_and_query = url(-path_info=>1,-query=>1);
     $netloc        = url(-base => 1); #http://your.host.com
 

 五 CGI.pm中的html元素方法的特殊用法

 如果元素的第二個(gè)參數(shù)為list類型,則會被分解,例如:

復(fù)制代碼 代碼如下:

print ul(
              li({-type=>'disc'},['Sneezy','Doc','Sleepy','Happy'])
            );
 

 相當(dāng)于:
    <ul>
      <li type="disc">Sneezy</li>
      <li type="disc">Doc</li>
      <li type="disc">Sleepy</li>
      <li type="disc">Happy</li>
    </ul>
 例如table可以寫為:
復(fù)制代碼 代碼如下:

  print table({-border=>undef},
            caption('When Should You Eat Your Vegetables?'),
            Tr({-align=>'CENTER',-valign=>'TOP'},
            [
               th(['Vegetable', 'Breakfast','Lunch','Dinner']),
               td(['Tomatoes' , 'no', 'yes', 'yes']),
               td(['Broccoli' , 'no', 'no',  'yes']),
               td(['Onions'   , 'yes','yes', 'yes'])
            ]
            )
         );

  六 CGI.pm中非標(biāo)準(zhǔn)的html元素方法

  print comment('here is my comment'); #generates an HTML comment (<!-- comment -->)
 因?yàn)榕cperl方法沖突,所以大寫的:
     Select
     Tr
     Link
     Delete
     Accept
     Sub
 其他特殊的html元素方法:start_html(), end_html(), start_form(), end_form(), start_multipart_form() and all the fill-out form tags。

 七 CGI.pm中的form相關(guān)

 1 start_form 和start_multipart_form

復(fù)制代碼 代碼如下:

  print start_form(-method=>$method,
                     -action=>$action,
                     -enctype=>$encoding);
       <... various form stuff ...>
     print end_form;
         -or-
     print start_form($method,$action,$encoding);
       <... various form stuff ...>
     print end_form;

如果沒有指定method,action,enctype,默認(rèn)地為:
     method: POST
     action: this script
     enctype: application/x-www-form-urlencoded for non-XHTML
              multipart/form-data for XHTML, see multipart/form-data below.
 當(dāng)使用start_form的時(shí)候,enctype為application/x-www-form-urlencoded,如果需要新式的xhtml,則需要使用start_multipart_form,此時(shí)enctype為multipart/form-data。

 更多內(nèi)容請參考:cgi man page http://search.cpan.org/~markstos/CGI.pm-3.60/lib/CGI.pm

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产视频一区在线观看| 亚洲区第一页| 欧美区国产区| 欧美肥婆xxxx欧美另类| 国产精品日本一区二区不卡视频| 中文字幕+乱码+中文字幕一区| 久久青草精品视频免费观看| 一区二区三区成人| 久久久久久毛片| 国产主播在线看| 免费看成人片| 亚洲欧美日本视频在线观看| 麻豆精品一区二区综合av| 99久久久国产精品| 欧美日韩日日摸| 翔田千里一区| 欧美日韩在线一二三| 浪潮av在线| 日本亚洲最大的色成网站www| 亚洲男人天堂2024| 亚洲人成色77777| 中国女人精69xxxxxx视频| 国产一二三区av| 日韩精品av一区二区三区| 久久久久9999亚洲精品| 日本国产一区| 日韩免费观看av| 99reav在线| 影音先锋中文字幕在线视频| 国产亚洲aⅴaaaaaa毛片| 欧美丰满少妇xxxxx| 欧美老tube| 欧美一区二区三区四区在线观看地址| 中文一区一区三区免费在线观看| 中文一区二区三区四区| 国产一级片在线播放| 91麻豆免费观看| 国产丝袜一区视频在线观看| 久久久久网站| 亚洲欧美日韩精品久久亚洲区| 国产精品亚洲片夜色在线| 天堂а√在线8种子蜜桃视频| 亚洲精品综合久久中文字幕| 色婷婷成人综合| 免费国产在线精品一区二区三区| 夜夜夜夜夜夜操| 亚洲综合免费观看高清完整版在线| 女同性αv亚洲女同志| 国产精品久久久久久久久久久不卡| 欧美综合国产| 激情成人午夜视频| 伊人成综合网站| www.中文字幕久久久| 精品精品国产国产自在线| 国产美女www爽爽爽| 午夜免费久久看| 中文字幕免费在线播放| 国产美女诱惑一区二区| 国产精品拍拍拍| 国精品日韩欧美一区二区三区| 91丨porny丨中文| 草碰在线视频| 91成人免费网站| 最新精品视频| 一本久久知道综合久久| 亚洲精品一级二级三级| 日韩精品无码一区二区三区免费| 免费网站在线观看视频| 久操成人av| 亚洲国产日韩欧美在线图片| 精品三级久久久| 老司机午夜福利视频| 国产三级欧美三级| 日韩av电影手机在线观看| 欧美婷婷六月丁香综合色| 日韩一级片大全| 欧美日韩大片免费观看| 亚洲欧美综合精品久久成人| 亚洲裸体俱乐部裸体舞表演av| 男女免费观看在线爽爽爽视频| 亚洲精品福利免费在线观看| 欧美777四色影| 国产中文字幕精品| 亚洲女同性videos| 亚洲午夜剧场| 色一情一乱一伦一视频免费看| 亚洲三级电影全部在线观看高清| 欧美三区在线| 欧美视频中文一区二区三区在线观看| 亚洲都市激情| 永久久久免费浮力影院| 免费精品一区| 日韩精品视频一区二区在线观看| 亚洲精品成人在线播放| 亚洲精品偷拍| 日本在线观看免费| 亚洲.欧美.日本.国产综合在线| 亚洲激情av| 国产毛片在线| www.欧美日本| 欧洲大片精品免费永久看nba| 五月开心播播网| 免费高清视频在线观看| 成人av在线播放网址| 亚洲欧洲国产日韩| 日韩视频一区二区三区四区| 成人综合久久网| 国产亚洲精品久久久久久久| 捆绑调教日本一区二区三区| 中文av在线全新| 亚洲精品一区二区精华| 国产成人精品视频在线观看| 高h视频在线播放| 福利片在线免费观看| 精品国偷自产国产一区| 一区二区日韩欧美| 国产伦精品一区二区三区免费| 久久久av电影| 日韩精品中午字幕| 日韩精品免费综合视频在线播放| 捆绑调教美女网站视频一区| 国产精品久久占久久| 亚洲欧美精品在线观看| 亚洲福利视频在线| 国产69精品久久久久9999apgf| 欧美一级视频免费观看| 国产在线久久久| 欧美日韩国产精品| 国产日韩欧美中文| 精品少妇久久久久久888优播| 丁香花在线电影| 亚洲蜜桃精久久久久久久久久久久| 国产成人亚洲综合91精品| 精品无人区无码乱码毛片国产| 女同性一区二区三区人了人一| 国产草草浮力影院| 国产激情精品久久久第一区二区| 手机在线视频一区| 亚洲综合网在线| 综合久久一区二区三区| 97久久精品人人澡人人爽| 周于希免费高清在线观看| 国产精品视频精品| jizz免费观看视频| 激情综合中文娱乐网| 亚洲成av人影片在线观看| 天天揉久久久久亚洲精品| 国产又黄又爽视频| 国产亚洲福利社区一区| 国产精品熟妇一区二区三区四区| 97超碰成人在线| 免费在线一区观看| 明星乱亚洲合成图.com| 在线不卡视频一区二区| 最近最新中文字幕在线| 亚洲国产精品一区二区第一页| 玛丽玛丽电影原版免费观看1977| 日韩国产欧美视频| 日本伊人色综合网| 天堂www在线а√天堂| 日韩久久不卡| 男人天堂视频网| 日韩黄色成人| 人妻精油按摩bd高清中文字幕| 欧美精品啪啪| 麻豆一区二区三区在线观看| 亚洲欧洲另类精品久久综合| 久久99精品一区二区三区| wwwxx在线观看| 国产原创av在线| a成人v在线| www插插插无码免费视频网站| 亚洲成av人片在线观看| 国产美女精品免费电影| 成人免费视频网址| 国产69精品久久99不卡| 久久久婷婷一区二区三区不卡| www.av网站| 黄色小视频在线看| 中文产幕区在线观看| 欧美少妇xxx| 福利91精品一区二区三区| 91麻豆福利精品推荐| 免费无码国产v片在线观看| 欧美天堂一区二区三区| 国产精品对白交换视频| 国产美女在线看| 91久久人澡人人添人人爽欧美| 91久久夜色精品国产按摩| 综合久久一本| 国产91丝袜在线播放| 嫩草伊人久久精品少妇av杨幂| 亚洲成人午夜影院| 国产色91在线| 久久精品一区二区三区不卡| 久久人人爽人人爽人人片| 欧美日韩色图| 97福利网站在线观看视频| 精品人妻无码一区二区三区换脸| 91麻豆精品| 久久手机在线视频| 羞羞视频在线观看一区二区| 欧美日韩免费观看一区二区三区| 国产成人av一区二区三区在线观看| 老女人av在线| caopor在线视频| 国产成人拍精品视频午夜网站| 九九综合在线| 黄色av一级片| 成人毛片100部免费看| 久久精品一本久久99精品| 性xx色xx综合久久久xx| 黄色成人在线免费| 日韩精品一区第一页| 熟女丰满老熟女熟妇| 欧美精品电影在线| 亚洲精品视频啊美女在线直播| 好男人在线视频www| 欧洲美女亚洲激情| 在线观看视频污| 欧美在线91| 亚洲激情男女视频| 麻豆一区一区三区四区| 午夜探花在线观看| 麻豆亚洲av熟女国产一区二| 福利精品视频在线| 免费a视频在线观看| 欧美 国产 小说 另类| 国产www.大片在线| 米奇四色影视| 亚洲一区二区观看| 久久午夜羞羞影院免费观看| 天天做天天爱天天爽| 日韩成人黄色片| 91精品国产视频| 色欲色香天天天综合网www| 精品久久久久久久久久久| 久久久久亚洲av无码专区| 欧美日本韩国一区| 欧美一级大片在线免费观看| 在线观看不卡| 欧美成人国产精品高潮| 成人国产免费视频| 一区二区三区中文在线观看| 欧美日本色图| 久久五月婷婷丁香社区| 国产精品无码一区二区在线| 国产在线视频一区二区| 四虎4hu永久免费入口| www成人在线| 久久精品国产亚洲av无码娇色| 中文字幕永久在线| 国产视频在线看| 成人精品视频一区二区三区尤物| 欧美人妖在线| 精品免费国产二区三区| 九九精品在线观看| 噜噜噜在线观看免费视频日韩| 欧美一二三区精品| 中文在线观看免费高清| 国产精品美女在线观看直播| 亚洲天堂av一区| 欧美性猛交xxxx乱大交蜜桃| 无码国精品一区二区免费蜜桃| 波多野结衣精品在线| 尤物九九久久国产精品的分类| 亚洲国产无线乱码在线观看| 4hu四虎永久在线影院成人| 国产亚洲一区二区手机在线观看| 成人性a激情免费视频| 7777精品伊久久久大香线蕉语言| 偷偷色噜狠狠狠狠的777米奇| 牛牛精品成人免费视频| 国产日韩精品视频一区| 国产精品外国| 九九视频这里只有精品| 久久久久免费精品| 国产精品69精品一区二区三区| 国产午夜亚洲精品不卡| 粉嫩av一区二区三区| 精品伊人久久久久7777人| 亚洲精品国偷拍自产在线观看蜜桃| 精品国精品自拍自在线| 一级性生活毛片| 精品一区二区在线视频| 国产精品第六页| 欧美一区二区福利| 久久免费少妇高潮99精品| 日本按摩中出| 色先锋久久影院av| 色噜噜久久综合伊人一本| 夜夜嗨av一区二区三区四季av| 欧美色女视频| 亚洲卡通动漫在线| 久久99久久99小草精品免视看| 国产精品美女| 亚洲国产成人自拍| 国产v日产∨综合v精品视频| h视频在线免费看| 国产精品户外野外| 国产精品亚洲αv天堂无码| 日本不卡一区二区三区四区| 日韩精品免费看| 日本在线播放一区| 91亚洲精品在线| 国产亚洲一级高清| 色综合欧美在线视频区| 国产网站观看9久| 最新国产在线视频| 蜜桃av在线| 欧美激情国产高清| 涩涩漫画在线观看| 亚洲成人在线视频播放| 欧美色图激情小说| 亚洲一区二区三区无码久久| www.色在线| 久久99国内精品| 亚洲精品资源在线| 欧美日韩美女视频| 国产一区二区导航在线播放| av一本久道久久波多野结衣| 男女性杂交内射妇女bbwxz| 精品国产成人av| 亚洲综合丝袜美腿| 超碰97人人人人人蜜桃| 日韩一区和二区| 国产精品久久久久久久久久10秀| 九九热在线视频观看这里只有精品|