麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Perl > 正文

PerlCGI程式寫作常問問題集(2)Modules(模組)

2019-11-18 17:23:34
字體:
來源:轉載
供稿:網友

 
2.0-Modules(模組)

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

Q2.1:我是不是該用PerlCGImodules*來寫CGIscripts?自己做不是比較容易嗎?
【譯者】CGImodules在此指CGI.pm及其他CGI::*的模組;詳見Q2.4。

這完全取決於您要做的是什麼。CGImodules較適合重量級的CGIscripts。如果是簡單的scripts的話,自己做或者是用CGILite這個模組會簡便許多。如果您真的愿意,您甚至可以用舊的Perl4cgi-lib.pl這個library*。

【譯注】作者TomC.之所以這麼說是因為他基本上不贊成使用cgi-lib.pl,有興趣的讀者可以看他寫的WhyIamnotfondofcgi-lib.pl(為什麼我不欣賞cgi-lib.pl)。


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

Q2.2:如何知道某個module該怎麼個用法?
大多數modules的使用說明是直接嵌在程式里的*。如果是這樣的話,您可以用pod2man這個script來閱讀使用指南:

pod2textname_of_module.pm
pod2manname_of_module.pm|nroff-man|more

【譯注】如果您在*.pm檔中看到``=head1''、``=cut''這類的東西便是顯示使用說明有附在里頭。這是LarryWall設計的POD(PlainOldDocument)格式。詳見perlpodmanpages。


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

Q2.3:有哪些Perl4的CGI或WWW的libraries?
最廣為使用的Perl4CGIlibrary是SteveBrenner的cgi-lib.pl。



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

Q2.4:有哪些給Perl5使用的CGImodules?我該用哪個?為什麼?
CGI.pm*
這個很棒的module在功能上和部分CGI::*modules相重疊。如果您不想和多重modules打交道的話,您可以只用這一個。我們等一下在後頭會給您看一個用CGI.pm來替CGIscripts除錯的實例。
此外,Lincoln(LincolnStein;CGI.pm的作者)還寫了一本討論Web和CGI非常好的書,叫HowToSetUpandMaintainaWorldWideWebSite。

【譯者】建議讀者多使用CGI.pm。CGI::*已經有很長一段時間沒有更新了,而CGI.pm則不斷的有改良的新版推出,并已加入對FastCGI的支援,因此對FastCGI的使用者也相當方便。此外,mod_perl(Apache的perlmodule)中所附的CGI::XA,也是由CGI.pm改進而來的。CGI.pm讓使用者免除自己做低階資料處理(如印HTTP標頭、替form,cookies資料解碼等)的麻煩。

CGI::*模組套件
這些模組原先大多是由TimBunce所寫,現在則由LincolnStein來負責維護。它們的功能包括了幫您產生及處理form,替CGI程式除錯,以及在不同的forms之間維系一個狀態值。
CGILite
這個輕量級的module是CGI::*modules之外的另一個選擇。它可算是在老舊的cgi-lib.pl之上改良、加料後的產物。
以上叁者均有能力處理multipartform資料(即上傳)。


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

Q2.5:為什麼這麼多perlCGIlibraries都是object-oriented(物件導向)的?我對用物件導向來寫程式一竅不通。難道就沒有簡單一點,給不會物件導向的人使用的libraries嗎?物件導向有多難?
其實使用物件導向的modules并不難。先去看看TomChristiansen的EasyIntrotoUsingPerlObjects(簡單介紹如何使用Perl物件)吧。

前頭提到的CGImodules用起來真的是很容易!這里有一個用CGILite印出form資料的實例*:

【譯者】CGI.pm的使用說明中有更多范例可供參考。

#!/usr/local/bin/perl-w

useCGI_Lite;

$cgi=newCGI_Lite;
趖a=$cgi->parse_form_data;

PRint"Content-type:text/plain","/n/n";

foreach$key(keys趖a){
print$key,"=",$data{$key},"/n";
}

exit0;

要注意的是,即使您機器上的Perl不是您裝的(您不是系統管理者),或是您權限不夠無法將這些modules和其他的Perllibrary檔案安裝在同一個地方,您還是可以使用這些modules的--只要將它們擺在一個自己方便的地方,然後在您的script開始處加上*:

BEGIN{
unshift@INC,"/your/dir/favorite/place";
}

【譯者】建議改用較新的方式:

uselibqw(/your/dir/favorite/place);

好。以下是一個用到CGI::*modules的例子:

#!/usr/local/bin/perl-w

useCGI::Form;

$cgi_form=newCGI::Form;

print<<'End_of_Header';

看著我做!

看著我做!


End_of_Header

print$form->startform;

##產生一個單行輸入欄位(textfield)

print'姓名:';
print$form->textfield('name'),"
/n";

##產生一組單選按紐(radiobuttons)

print'

您住哪兒:
';
print$form->radio_group(-name=>'where',
-values=>['北美洲',
'南美洲',
'歐洲',
'澳洲',
'亞洲',
'南極洲'],
-default=>'北美洲',
-linebreak=>'true');

##產生一個多行輸入欄位(textarea)

print'意見:';
print$form->textarea('comments',undef,5,40);

print"

";
print$form->reset;
print$form->defaults;
print$form->submit('送出!','Submit');
print$form->endform;

print"";

reset、defaults,及submit叁種方法(methods)會產生不同的類型的按鈕。reset這個按鈕讓您把目前form欄位中所填的資料洗掉,并顯示屬於上一個狀態(或回合)的資料。defaults這個按鈕則是將form欄位資料徹底洗去。還有submit這個方法產生一個送出鈕以便讓人將資料送至server處。

您看,不是很容易嗎?

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

圖片精選

主站蜘蛛池模板: 亚洲网站在线观看 | 免费a级黄色毛片 | 毛片在线免费观看完整版 | 91九色丨porny丨国产jk | 97zyz成人免费视频 | 国产精品hd免费观看 | 黄色免费小视频网站 | 精品黑人一区二区三区国语馆 | 国产免费人做人爱午夜视频 | 黄色av网站在线观看 | 亚洲一区二区三区日本久久九 | 亚洲看片网 | 毛片免费视频播放 | 最近免费观看高清韩国日本大全 | 亚洲网站在线观看视频 | 在线成人一区 | 久久久久国产成人免费精品免费 | 色成人在线 | 在线播放免费视频 | 综合毛片 | 97青青草视频 | 日韩精品a在线观看 | 看免费一级毛片 | 日日草日日干 | 日本中文字幕电影在线观看 | 91成人久久 | 91精品国产综合久久婷婷香 | 黄色大片高清 | 国产精品久久久久一区二区 | 天天草夜夜 | 一区二区免费看 | 欧美精品一二三区 | 亚洲精品久久久久久久久久 | 宅男噜噜噜66国产在线观看 | 嗯~啊~用力~高h | 日本精品免费观看 | 国产精品久久久久av | 三级xxxx| 亚洲一区二区不卡视频 | 国产99久久久国产精品下药 | 91精品国产一区二区三区四区在线 |