• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Perl在CGI程序設計中常用的函數和指令

    發表于:2007-06-11來源:作者:點擊數: 標簽:
    Perl在CGI程序設計中常用的函數 -------------------------------------------------------------------------------- 指令:# 說明:注解符號Remark宣告 范例:#本程序是一個示范注解說明 ------------------------------------------------------------------

    Perl在CGI程序設計中常用的函數

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

    指令:#

    說明:注解符號Remark宣告

    范例:#本程序是一個示范注解說明

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

    指令:print

    語法一:print Filehandle LIST

    說明:這個Filehandle可把它看作在I(Input)/O(Output)間的一個橋梁,可以利用Filehandle來做出數據讀入寫出的動作。stdin是代表從哪邊輸入數據,例如從電腦的鍵盤輸入,stdout是代表從哪邊輸出數據;例如從電腦的屏幕輸出;stderr是代表從哪邊輸出錯誤的數據,例如從電腦的屏幕輸出。而在Perl語言中有三個標準的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 換頁Form feed

    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 $stringn";

    會將“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)

    說明:把最后一個字符刪除掉,常常用這個函數把換行的字符(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&email=B";

    @list=split(/&/,$string), #此時@list=〈"who=A","email=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 sort@array); #此時@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應用程序中拿來應用了。此外,也可以用下面這一行指令在Unix系統下取得系統的時間。為了避免錯誤發生,最好用絕對路徑的方法來取得系統時間,如果絕對路徑不清楚的話可以用“which date”,這個指令來得知。最后要提醒讀者的是要用`這個符號才能執行Unix系統的外部程序,如果是用‘(單引號)這個字符號的話,就不能正確執行系統的程序了。

    $date=`/usr/bin/date`;

    而在perl5版本中,也可以用下面這一行指令來取得系統時間。

    $date=localtime(time);

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

    指令:die

    語法:die LIST

    說明:會把LIST字符串顯示出來,并退出程序。常常和$!這個代表錯誤信息的變量一起使用。

    范例:

    Open(FILE'"$filename")||die"Cannotopenfile$!n";

    如果打開文件失敗的話,就會顯示出錯誤的信息,之后再退出程序。

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

    指令:open

    語法:open(Filehandle'"$fiiename")

    其中$filename是一個指定打開的文件名。

    說明:這是一個很常用的函數,可用于文件的打開(Read0niy)。在CGI程序設計中常常會打開一個文件來讀取數據,所以筆者會詳加說明這一個函數的相關用法。這個Filehandle可把它看作在I(Inpnt)/O(Output)間的一個橋梁,可以利用Filehandle來作出數據讀入寫出的動作。開始可用open這個函數來打開一個指定的文件,接下來可以使用<Filehandle>來讀取所打開文件的數據內容,最后一定要用close這個函數來關閉這個之前打開的Filehandle。要注意的是在CGI程序寫作中,當用open這個函數來打開文件的時候,一定要在打開的文件前加上文件所在的絕對路徑名稱。

    范例:

    $filename=Vpath/cgi.txt";

    open(FILE'"$filename")||die"Can not open $filename\n";

    #將數據指派給純量變量$line(一行一行地)

    while($line=<FILE>){

      print"$line";

    }

    close(FILE);

    就會把cgi.txt這個文件的內容顯示出來。

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

    語法二:open(Filehandle,"<$filename")

    說明:這個語法也可以打開一個存在的文件(Read Only)。

    范例:

    $filename="/path/cgi.txt";

    open(FILE,"<$filename")||die"Can not open $filenamen";

    #將<FILE>全部的數據內容都指派給數組@array

    @array=<FILE>;

    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="jcjung@tem.nctu.edu.tw";

    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"之后,就馬上退出這個程序。



    原文轉自:http://www.kjueaiud.com

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>