Perl在CGI程式設計中常用的函式 (轉)
指令:#
說明:註解符號Remark宣告
範例:#本是一個示範註解說明
-------------------------------------------------------------------------
指令:print
語法一:print Filehandle LIST
說明:這個Filehandle可把它看作在I(Input)/O(Output)間的一個橋樑,可以利用Filehandle來做出資料讀入寫出的動作。stdin是代表從哪邊輸入資料,例如從的鍵盤輸入,stdout是代表從哪邊輸出資料;例如從電腦的螢幕輸出;stderr是代表從哪邊輸出錯誤的資料,例如從電腦的螢幕輸出。而在語言中有三個標準的Filehandle:
(一)STDIN(標準輸入):是代表stdin的Filehandle
(二)STDOUT(標準輸出):是代表stdout的Filehandle
(三)STDERR(標準錯誤輸出):是代表stderr的Filehandle
如果要使用其他Filehandle的時候,就要用open這個來開啟一個Filehandle,我們可以用print這個函式把LIST的資料輸出給Filehandle。在為大家介紹print這個函式之前,先讓我們來看看print函式中特殊列印符號字元:
符號 內定含意
n 換行New Line
r 游標換行Return
t Tab鍵
f 換頁Fofeed
b 退回一鍵Backspace
v 垂直Tab鍵
a 響鈴Bell
07 十進位制ASCII碼
xff 十六進位制碼
c[ 控制字元
範例:
print STDOUT"i love perln";
將“i love perl"再加上換行顯示於螢幕上。
-------------------------------------------------------------------------
語法二:Print LIST
說明:如果省略Filehandle的話,就會把Filehandle內定為STDOUT。也就是會將LIST的資料內容顯示於螢幕上。
範例:
$Str1ng="perl";
print"i love $stri";
會將“i love perl”再加上換行顯示在螢幕上,而如果要讓雙引號內的變數失效的話,可以在變數前面加上這個符號。例如如果是print“i love $string”;的話,就會顯示出“i love $string”這個字串。
-------------------------------------------------------------------------
語法三:print
說明:同時省略Filehandle和LIST的話,就會以STDOUT為Filehandle,並會輸出$_這個內定輸出變數的資料內容。如果$_變數是一個空字串的話,就會顯示出一個空字串。
範例:
$_="i love perln";
print;
就會將"i love perl"再加上換行顯示在螢幕上
-------------------------------------------------------------------------
指令:printf
語法一:printf Filehandle LIST
說明:在perl語言中也提供C語言中printf的語法,用法和C語言中的用法一模一樣。如果把Filehandle省略的話,也一樣會把STD0UT當成是內定的Filehandle。在為大家介紹printf函式之前,先讓我們來看看printf函式中變換符號的字元:
符號 內定含意
%c 字元
%s 字串
%d 整數
%f 浮整數
%h 十六進位制碼
%o 八進位制碼
範例:
printf〈"chmod%d%s\n","7l1","cgi");
會將“chmod 7ll cgi”再加上換行顯示於螢幕上。
-------------------------------------------------------------------------
指令:chop
語法:chop($string)
說明:把最後一個字元刪除掉,常常用這個函式把換行的字?br> ?n)刪除掉。
範例:
$string="hello!n";
chop($string); #此時$string="hello!";
而這兩行也可以寫成chop($string="hello!\n");
-------------------------------------------------------------------------
指令:split
語法:split(/pattern/,$string,limit)
其中/pattern是文書處理的,在下一小節中會有詳細的語法介紹。而limit是代表要分割的個數,可以省略。
說明:用一個指定的文書處理模式來分割$string字串。
範例:
$string="i;am;cute";
@list=split(/:/,$string); #此時@list=〈"i","am","cute");
($a,$b,$c)=split(/:/,$string); #此時$a="i",$b="am",$c="cute";
@list=split(/:/,$string,2); #此時@list=("i","love");
在傳送CGI應用程式資料的時候會先將資料編碼,其中會將FORM中每個資料欄位的資料內容用&這個符號隔開,所以在解碼的時候就要以&這個符號為分割的字元,將每個資料欄位分割出。例如:
$string="who=A&e=B";
@list=split(/&/,$string), #此時@list=〈"who=A","=B");
而資料欄位的名稱和這個資料欄位的值是用=這個符號來隔開,如果想取得資料欄位的名稱和所對應的值的話,就用要=這個符號來分割資料欄位,例如:
$list="who=A";
(0$name,$value)=sp1it(/=/,$list); #此時$name="who";$value="A";
-------------------------------------------------------------------------
指令:keys
語法:keys(%ARRAY)
說明:取出關聯陣列%ARRAY中全部的key。
範例:
%NAMES=(1,"one",2,"two");
@list=keys(%NAMES), #此時@list=(l,2);
-------------------------------------------------------------------------
指令:values
語法:values(%ARRAY)
說明:取出關聯陣列%ARRAY中全部的value。
範例:
%NAMES=(1,"one",2,"two");
@list=values(%NAMES); #此時@list=("one","two");
-------------------------------------------------------------------------
指令:reverse
語法:reverse(@array)
說明:將陣列@array中的元素由後到前重新排列。
範例:
@list=("A","B","C","D");
@1ist=reverse(@list); #此時@list=("D","C","B","A")
-------------------------------------------------------------------------
指令:sort
語法:sort(@array)
說明:將陣列@array中的元素由小到大排序,如果要由大到小排序的話,就要再加上reverse這個函式。
範例:
@array=("b","c","a");
@array=sort(@array); #此時@array=("a",b","c");
@array=(reverse ); #此時@array=("c","b","a");
這個語法也可以寫成@array=(reverse sort(@array));
@number=(l0,3.20);
@number=sort(@number); #此時@number=(l0,20,3);
由上個範例可以知道如果要sort函式來排 序數值的時候,就會出差錯,因此要用下面這個方法才能正確地使用sort函式來排序。
@number=(sort{$a<=>$b}@number); #此時@number=(3,10,20);
-------------------------------------------------------------------------
指令:length
語法:length($string)
說明:求出一字串$string的bytes值。
範例:
$string="Perl";
@size=length($string); #此時$size=4;
-------------------------------------------------------------------------
指令:substr
語法:substr($string,offset,length)
其中offset代表起始字元的位置,length代表引用的字串長度,如省略length的話代表從起始值到字串的最後一個字元長度。而offset如果是負值的話,就會從字串右邊開始取出指定的字串。
說明:在一字串$string中取出想要的字串。
範例:
$x=substr("testing",2,2); #此時$x="st";
$x=substr("testing",2); #此時$x="sting";
$x=substr("testing",-2,2); #此時$x="in";
-------------------------------------------------------------------------
指令:index
語法:index($string,$substring,position)
其中$substring是指要尋找的字元,position代表要從哪一個位置開始找起,如省略position的話就從頭開始找起。
說明:返回所要找尋的字元在一字串$string中的位置,如果在字串中找不到字元的話,則會返回-l這個值。
範例:
$x=index("testing","t"); #此時$x=0;
$x=index("testing","t",2); #此時$x=3;
$x=index("testing","perl"); #此時$x=-l;
-------------------------------------------------------------------------
指令:push
語法:push(@array,$string)
說明:在陣列@array的最後一個元素後附加新的元素string到陣列@array中。
範例:
@array=("one","two");
push(@array,"three"); #此時@array=〈"one","two","three");
-------------------------------------------------------------------------
指令:pop
語法:pop(@array)
說明:將陣列@array的最後一個元素刪除,並將刪除的元素返回。
範例:
@array=〈"one"'"two");
$rm=pop〈@array); #此時@array=("one");而$rm="two";
-------------------------------------------------------------------------
指令:unshift
語法:unshift(@array,$string)
說明:在陣列@array的第一個元素前附加新的元素$string到陣列@array中。
範例:
@array=("one","two");
unshift(@array'"three"); #此時@array=("three","one","two");
-------------------------------------------------------------------------
指令:shift
語法:shift(@array)
說明:將陣列@array的第一個元素刪除,並將刪除的元素返回。
範例:
@array=("one","two");
$rm=shift(@array); #此時@array=("two"),而$rm="one";
-------------------------------------------------------------------------
指令:join
語法:join($string,@array)
說明:在一陣列@array的元素之間加上一指定的字元$string,並將結果返回。
範例:
@array=("one","two","three");
$total=join(":",@array); #此時$total="one:two:three";
-------------------------------------------------------------------------
指令:grep
語法:grep(/pattern/,@array)
說明:將符合文書處理模式(regular expression)的陣列元素找出來。
範例:
@array=("one","on","in");
$count=grep(/on/,@array); #此時$count=2;(代表有二個元素符合)
@result=grep(/on/,@array); #此時@result=("one","on");
-------------------------------------------------------------------------
指令:hex
語法:hex($string)
說明:將十六進位制的數值轉成十進位制。
範例:
$decimal=hex("ff"); #此時$decimal=255;
-------------------------------------------------------------------------
指令:rand
語法:rand($interger)
說明:常和函式srand搭配來取得一隨機數,如果沒有事先宣告stand函式的話,則取出的數值是一個固定值。這個語法會返回一個介於0和$interger之間的數值,如果$interger省略的話,則會返回一個介於0和1的數值。
範例:
srand; #要先宣告srand函式,才能產生隨機數的效果
$int=rand(10); #$int的值會大於0而且小於10
如果希望產生的亂數是整數的話,就要再 加上int這個函式
$int=int(rand(10)); #$int的值是一個整數,且值在0和9之間
-------------------------------------------------------------------------
指令:localtime
語法:localtime(time)
說明:可返回九個有關時間的元素,在寫CGI應用程式的時候常會用到的時間,所以在此會詳細介紹這個函式的用法。
範例:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
其中:
$sec 代表秒數[0,59] $min 代表分數[0,59]
$hour 代表小時數[0,23] $mday 代表是在這個月的第幾天[1,31]
$mon 代表月數[0,11],要將$mon加l之後,才能 符合實際情況
$year 從l990年算起的年數
$wday 從星期六算起,代表是在這週中的第幾天 [0,6]
$yday 從一月一日算起,代表是在這年中的第幾 天[0,365]
$isdst 只是一個flag
知道這些變數之後,就可以在CGI應用程式中拿來應用了。此外,也可以用下面這一行指令在系統下取得系統的時間。為了避免錯誤發生,最好用絕對路徑的方法來取得系統時間,如果絕對路徑不清楚的話可以用“which date”,這個指令來得知。最後要提醒讀者的是要用`這個符號才能Unix系統的外部程式,如果是用‘(單引號)這個字元號的話,就不能正確執行系統的程式了。
$date=`/usr/bin/date`;
而在perl5版本中,也可以用下面這一行指令來取得系統時間。
$date=localtime(time);
-------------------------------------------------------------------------
指令:d
語法:die LIST
說明:會把LIST字串顯示出來,並退出程式。常常和$!這個代表錯誤資訊的變數一起使用。
範例:
Open(FILE'"$filename")||die"Cannotopenfile$!n";
如果開啟失敗的話,就會顯示出錯誤的資訊,之後再退出程式。
---------------------------------------------------------------------
指令:open
語法:open(Filehandle'"$fiiename")
其中$filename是一個指定開啟的檔名。
說明:這是一個很常用的函式,可用於檔案的開啟(Read0niy)。在CGI中常常會開啟一個檔案來讀取資料,所以筆者會詳加說明這一個函式的相關用法。這個Filehandle可把它看作在I(Inpnt)/O(Output)間的一個橋樑,可以利用Filehandle來作出資料讀入寫出的動作。開始可用open這個函式來開啟一個指定的檔案,接下來可以使用
範例:
$filename=Vpath/cgi.txt";
open(FILE'"$filename")||die"Can not open $filename\n";
#將資料指派給純量變數$line(一行一行地)
while($line=
print"$line";
}
close(FILE);
就會把cgi.txt這個檔案的內容顯示出來。
-------------------------------------------------------------------------
語法二:open(Filehandle,"說明:這個語法也可以開啟一個存在的檔案(Read Only)。
範例:
$filename="/path/cgi.txt";
open(FILE," #將
@array=
close(FILE);
print"@array";
也會把cgi.txt這個檔案的內容顯示出來。
-------------------------------------------------------------------------
語法三:open(Filehandle,">$filemme)
說明:建立一個新的檔案(Write Only),如果已經存在這個檔案了,就會把舊檔名覆蓋過去。並可用print Filehandle的方式將資料寫到所開啟的檔案中。
範例:
$filename="/path/cgi.txt";
open(FILE,">$filename")||die"Can not open $filenamen";
print FILE"this is a new line1n"; #n是換行字元
print FILE"this is a new line2n";
close(FILE);
會把資料存在一個新檔案中。
-------------------------------------------------------------------------
語法四:Open(Filehandle,">>$filename")
說明:資料用附加的方式寫入一檔案(Write Only),如果指定的檔名不存在的話,就會建立一個新的檔案。
範例:
$filename="/path/cgi.txt";
open(FILE,">>$filename")||die"Can not open $filenamen";
print FILE"this is a newline1n";
print FILE"this is a newline2n";
close(FILE);
會把資料附加(append)到一個檔案(cgi.txt)中。
-------------------------------------------------------------------------
語法五:Open(Filehandle,"|Unix Command")
說明:就會把在Fiiehandle的資料輸出給Unix的指令來作處理。
範例:
$mailprog="/usr/ucb/mail"; #Unix系統上的要加絕對路徑哦!)
$who="";
open(FILE,"|$mailprog$who")||die"CannotFail!n";
print FILE"想不想我呀?n";
print FILE"要快一點回信哦!n";
close(FILE);
就會透過Unix系統mail的程式,將FILE這個Filehandle的資料內容寄給$who這個變數所指定的收信人。我們可以利用open這個函式來設計一個來信批評指教的CGl應用程式,在本書中的下一章中會有詳細的介紹。
-------------------------------------------------------------------------
指令:close
用法:close(Filehandle)
說明:用open這個函式來開啟一個filehandle之後,一定要用close這個函式把所開啟的Filehandle關閉。
範例:
open(Fiiehandle,"$filename");
close(Filehandle);
-------------------------------------------------------------------------
指令:pack
語法:pack("指定的格式",LIST)
說明:pack這個函式會將一個LIST變成所指定的二進位制資料格式。在CGI程式分割解碼過程中,會用到pack這個函式,所以筆者在此簡單介紹這個函式的用法。
範例:
$string=pack("C",65); #此時$string="A";
將65這個ASCII碼轉換成一個unsigned字元,其中C就是指定要轉換成unsigned字元的意思。
-------------------------------------------------------------------------
指令:read
語法:read(Filehandle,$string,length)
其中length是代表讀入字串的長度(bytes)。說明:用read這個函式把Filehand1e中的資料依指定的字串長度讀入之後指派給$string這個變數。在CGI程式分割解碼過程中,如果FORM的傳送方式是設定為POST的話,就會將傳送的資料設定為標準輸入,所以會將資料內容指定給STDIN這個標準輸入的Filehandle,而CGI環境變數$ENV{'CONTENT_LENGTH'}就是代表使用者送出資料內容的長度,因此我們要用read這個函式來取得使用者送出的資料內容。
範例:
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
就會將STDIN這個標準輸入Filehandle中的資料依指定的字串長度讀入,再指派給$buffer這個變數。
-------------------------------------------------------------------------
指令:exit
語法:exit
說明:退出執行的程式。
範例:
print"i love perl";
exit;
顯示出“i love perl"之後,就馬上退出這個程式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981613/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 本地除錯PERL CGI程式(轉)除錯
- Windows 程式設計常用函式Windows程式設計函式
- perl 中glob函式的使用函式
- UNIX系統程式設計常用庫函式說明(轉)程式設計函式
- 總結.NET程式設計中經常用到的27個函式程式設計函式
- 函數語言程式設計中的常用技巧函數程式設計
- 【Perl程式設計-6】正規表示式--替換+轉化程式設計
- PERL物件程式設計基礎(轉)物件程式設計
- Cultured Perl: 吸引 C 和 Java 程式設計師目光的 Perl 5.6 (轉)Java程式設計師
- mod_perl 程式設計介紹 (轉)程式設計
- Shell程式設計-09-Shell中的函式程式設計函式
- ASP.NET網路程式設計中經常用到的27個函式集ASP.NET程式設計函式
- 函式程式設計函式程式設計
- perl字串函式字串函式
- ASP.NET網路程式設計常用的27個函式ASP.NET程式設計函式
- perl printf函式的使用函式
- perl 程式設計利器程式設計
- perl程式設計技巧程式設計
- [Linux C]CGI程式設計Linux程式設計
- Nginx提供perl CGI訪問Nginx
- Java中的函數語言程式設計(二)函式式介面Functional InterfaceJava函數程式設計函式Function
- asp常用函式 (轉)函式
- linux C程式設計中常用的函式--字元測試篇LinuxC程式程式設計函式字元
- python網路程式設計中常用到的函式總結Python程式設計函式
- scala 函式程式設計函式程式設計
- 函式程式設計之道函式程式設計
- perl自定義函式函式
- 在Delphi中巧用WINDOWS 的API函式 (轉)WindowsAPI函式
- [CUJ]泛型程式設計--轉移建構函式 (轉)泛型程式設計函式
- perl網路程式設計程式設計
- 用C語言技術進行CGI程式設計(轉)C語言程式設計
- Vector在Java程式設計中的應用 (轉)Java程式設計
- 傳奇程式設計師Larry Wall:Perl的樂趣 (轉)程式設計師
- (4)mysql 中的常用函式MySql函式
- MATLAB中的常用函式Matlab函式
- 在CGI中實現session的想法和實現 (轉)Session
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- Java中的七種函式程式設計技術 - foojayJava函式程式設計