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

首頁 > 編程 > Perl > 正文

perl的cgi編程詳細解析

2020-02-23 19:47:41
字體:
來源:轉載
供稿:網友

  今天小編跟大家分享一篇perl的cgi編程詳細解析,感興趣的朋友跟小編一起來了解一下吧!

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

  1. CGI.pm實現了兩種使用方法,分別是面向對象的方式和傳統的perlmodule方法的方式。

  面向對象的方式:

  復制代碼 代碼如下:

  #!/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

  傳統的module方法的方式:

  復制代碼 代碼如下:

  #!/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中的方法,通常有很多的參數,所以一般我們使用命名參數的方式來調用,例如:

  復制代碼 代碼如下:

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

  命名參數的值可以為scalar或array reference類型,例如:

  復制代碼 代碼如下:

  $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中都有對應的方法,這些方法根據需要動態的生成,且都包含2個參數,第一個參數為hash類型,對應html元素的屬性,第二個參數的string類型,對應html元素的內容。例如html中的h1對應的方法為h1( ):

  Code Generated HTML

  ---- --------------

  h1()

?

?

  h1('some','contents');

some contents

?

  h1({-align=>left});

?

?

  h1({-align=>left},'contents');

contents

?

  有時你想自己處理元素的開始和結尾,則可以使用start_tag_name和end_tag_name,例如

  print start_h1,'Level 1 Header',end_h1;

  有的時候start和end方法沒有被自動生成,需要顯示的指定,例如:

  use CGI qw/:standard *table start_ul/;

  用來自動生成start_table,end_table,start_ul和end_ul方法。

  另一個實例:

  復制代碼 代碼如下:

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

  Open a new frame

  二 CGI.pm中獲取cgi的參數

  @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()獲取參數的結果可以為scalar或array類型,例如當參數的結果來自多選的scrollinglist的時候就為array類型。如果參數的值在querystring中沒有給定("name1=&name2="),param()將返回emptystring。如果參數在querystring中根本不存在,則param()則返回undef或emptylist。當參數為多個值時querystring中寫法為var1=value1&var1=value2&var1=value3.

  三 header and start_html

  1. header指定html的header,例如

  復制代碼 代碼如下:

  print header; # 返回默認的type:text/html

  print header('image/gif'); #設定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為可以設別的參數,其他的命名參數都被轉化為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 創建頁面的頂層元素

?

?

  例如:

  復制代碼 代碼如下:

  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');

  或者:

  復制代碼 代碼如下:

  print start_html(-head=>[

  Link({-rel=>'shortcut icon',href=>'favicon.ico'}),

  meta({-http_equiv => 'Content-Type',-content=> 'text/html'})

  ]

  );

  在header中加入javascript的例子:

  復制代碼 代碼如下:

  $query = CGI->new;

  print header;

  $JSCRIPT= ;

  // 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的例子:

  復制代碼 代碼如下:

  use CGI qw/:standard :html3/;

  #here's a stylesheet incorporated directly into the page

  $newStyle= ;

  

  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

  復制代碼 代碼如下:

  $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元素方法的特殊用法

  如果元素的第二個參數為list類型,則會被分解,例如:

  復制代碼 代碼如下:

  print ul(

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

  );

  相當于:

  

?

  

?

  

?

  

?

  

?

  

  • Sneezy
  • Doc
  • Sleepy
  • Happy

?

  例如table可以寫為:

  復制代碼 代碼如下:

  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中非標準的html元素方法

  print comment('here is my comment'); #generates an HTML comment ()

  因為與perl方法沖突,所以大寫的:

  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相關

  1 start_form 和start_multipart_form

  復制代碼 代碼如下:

  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,默認地為:

  method: POST

  action: this script

  enctype: application/x-www-form-urlencoded for non-XHTML

  multipart/form-data for XHTML, see multipart/form-data below.

  當使用start_form的時候,enctype為application/x-www-form-urlencoded,如果需要新式的xhtml,則需要使用start_multipart_form,此時enctype為multipart/form-data。

  以上就是perl的cgi編程詳細解析,想必都了解了吧,更多相關內容請繼續關注武林技術頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩精品国产| 亚洲视频在线观看网站| 欧美激情xxxx性bbbb| www.久久久久久.com| 欧美日本高清视频| 亚洲欧美综合另类中字| 91高清在线免费观看| 91精品国产自产在线观看永久| 亚洲午夜国产成人av电影男同| 久久69精品久久久久久国产越南| 97精品在线观看| 欧美有码在线视频| 91欧美激情另类亚洲| 欧美视频一区二区三区…| 26uuu亚洲伊人春色| 欧美色另类天堂2015| 亚洲电影免费观看高清完整版| 97精品一区二区视频在线观看| 国产福利视频一区| 8090理伦午夜在线电影| 琪琪第一精品导航| 久久精品亚洲国产| 亚洲天堂av高清| 在线成人一区二区| 国产精品久久久久久亚洲影视| 按摩亚洲人久久| 不卡毛片在线看| 亚洲白虎美女被爆操| 国产精品一区二区久久精品| 91精品国产91久久久久| 久久久91精品国产一区不卡| 日日骚久久av| 国产va免费精品高清在线观看| 在线观看91久久久久久| 日韩在线不卡视频| 热re91久久精品国99热蜜臀| 欧美激情国产高清| 欧美亚洲另类激情另类| 亚洲精品视频在线播放| 色偷偷噜噜噜亚洲男人| 欧美精品日韩三级| 亚洲第一av网| 国产精品第一页在线| 欧美视频在线看| 亚洲电影在线看| 亚洲自拍中文字幕| 国产成人精品在线观看| 亚洲精品国产免费| 中文字幕日韩在线观看| 日韩有码片在线观看| 午夜精品美女自拍福到在线| 日韩视频欧美视频| 亚洲第一男人av| 亚洲人成电影网站色www| 日韩中文字幕精品| 色悠悠久久久久| 一区二区欧美激情| 亚洲欧美日韩中文在线制服| 色777狠狠综合秋免鲁丝| 日韩电影中文 亚洲精品乱码| 国产精品第一页在线| 国产精品高清免费在线观看| 国产精品欧美日韩久久| 亚洲tv在线观看| 97香蕉久久超级碰碰高清版| 97av在线视频免费播放| 久久久久久久久久国产精品| 欧美日韩国产999| 久久久久国产精品一区| 亚洲欧洲在线播放| 国产精品伦子伦免费视频| 国产日韩亚洲欧美| 九九视频直播综合网| 欧美俄罗斯乱妇| 少妇久久久久久| 国产男女猛烈无遮挡91| 91香蕉电影院| 91中文在线观看| 欧美日韩xxx| 91精品久久久久久久| 亚洲国产欧美自拍| 国产不卡av在线| 精品国产一区二区三区久久狼5月| 国产成人精品综合久久久| 亚洲人精品午夜在线观看| 欧美一乱一性一交一视频| 91高清免费视频| 久久久久999| 国产精品一区二区久久| 亚洲精品第一国产综合精品| 久久久国产一区| 国产精品久久久久9999| 亚洲自拍av在线| 亚洲高清一二三区| 色哟哟入口国产精品| 麻豆国产va免费精品高清在线| 亚洲色图在线观看| 欧美性xxxx极品hd欧美风情| 国产成人精品av在线| 色噜噜久久综合伊人一本| 欧美一区二三区| 一区二区三区 在线观看视| 2023亚洲男人天堂| 亚洲国产成人精品一区二区| 91欧美精品成人综合在线观看| 情事1991在线| 美女啪啪无遮挡免费久久网站| 欧美亚洲免费电影| 国产精品亚发布| 久热国产精品视频| 亚洲成色999久久网站| 国产脚交av在线一区二区| 亚洲www在线观看| 精品国产一区二区三区久久| 亚洲国产小视频在线观看| 欧美一级视频免费在线观看| 国产精欧美一区二区三区| 久久久久久久97| 亚洲成年人在线| 国产日韩在线看| 日韩视频免费在线| 精品国产精品自拍| 亚洲第一精品福利| 欧美性猛交视频| 日韩在线观看免费高清完整版| 日本国产欧美一区二区三区| 午夜精品久久久久久久男人的天堂| 亚洲欧美在线免费| 国产综合久久久久| 亚洲精品在线观看www| 日韩欧美精品免费在线| 国产精品美女久久| 亚洲香蕉伊综合在人在线视看| 国模gogo一区二区大胆私拍| 亚洲国产精品电影| 成人欧美一区二区三区黑人| 欧美日韩精品在线视频| 亚洲精选在线观看| 91免费精品国偷自产在线| 欧美视频免费在线观看| 亚洲欧美国产一区二区三区| 久久精品色欧美aⅴ一区二区| 国产98色在线| 国产精品极品美女粉嫩高清在线| 亚洲国产精品小视频| 狠狠色香婷婷久久亚洲精品| 欧美性猛交xxxx富婆弯腰| 亚洲视频一区二区| 2019亚洲日韩新视频| 亚洲国产精品电影在线观看| 久热在线中文字幕色999舞| 久久久久久久久亚洲| 亚洲第一色中文字幕| 欧美大奶子在线| 91美女片黄在线观| 国产欧美一区二区三区四区| www.欧美免费| 亚洲aⅴ男人的天堂在线观看| 欧美性xxxxxxx| 亚洲一区中文字幕在线观看| 国产精品网站视频| 91精品国产高清久久久久久久久| 日韩中文字幕久久| 欧美亚洲在线观看|