?? 附錄一 函數集.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>Perl教程 附錄一 函數集</title>
<LINK rel="stylesheet" href="article.css" type="text/css">
</head>
<body>
<br>
<p align="center">附錄一 函數集(未定稿)</p>
<p align="center"><a target="_blank" href="http://flamephoenix.126.com">by flamephoenix</a></p>
<a href="#1">一、進程處理函數</a><br>
<a href="#1.1">1、進程啟動函數</a><br>
<a href="#1.2">2、進程終止函數</a><br>
<a href="#1.3">3、進程控制函數</a><br>
<a href="#1.4">4、其它控制函數 </a><br>
<a href="#2">二、數學函數</a><br>
<a href="#3">三、字符串處理函數</a><br>
<a href="#4">四、標量轉換函數</a><br>
<a href="#5">五、數組和列表函數</a><br>
<a href="#6">六、關聯數組函數</a><br><br>
<a name="1">一、進程處理函數</a><br><br>
<a name="1.1">1、進程啟動函數</a><br>
<p>
<table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>eval</td>
</tr>
<tr>
<td>調用語法</td>
<td>eval(string)</td>
</tr>
<tr>
<td>解說</td>
<td>將string看作Perl語句執行。<br>正確執行后,系統變量$@為空串,如果有錯誤,$@中為錯誤信息。</td>
</tr>
<tr>
<td>例子</td>
<td>$print = "print (\"hello,world\\n\");";<br>eval ($print);</td>
</tr>
<tr>
<td>結果輸出</td>
<td>hello, world</td>
</tr>
</table>
</p>
<p>
<table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>system</td>
</tr>
<tr>
<td>調用語法</td>
<td>system(list)</td>
</tr>
<tr>
<td>解說</td>
<td>list中第一個元素為程序名,其余為參數。<br>system啟動一個進程運行程序并等待其結束,程序結束后錯誤代碼左移八位成為返回值。</td>
</tr>
<tr>
<td>例子</td>
<td>@proglist = ("echo", "hello,world!");<br>system(@proglist);</td>
</tr>
<tr>
<td>結果輸出</td>
<td>hello, world!</td>
</tr>
</table>
</p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>fork</td>
</tr>
<tr>
<td>調用語法</td>
<td>procid = fork();</td>
</tr>
<tr>
<td>解說</td>
<td>創建程序的兩個拷貝--父進程和子進程--同時運行。子進程返回零,父進程返回非零值,此值為子程序的進程ID號。</td>
</tr>
<tr>
<td>例子</td>
<td>$retval = fork();<br>if ($retval == 0) {<br> # this is the child process<br> exit; # this terminates the child process<br>} else {<br> # this is the parent process<br>}</td>
</tr>
<tr>
<td>結果輸出</td>
<td>無</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>pipe</td>
</tr>
<tr>
<td>調用語法</td>
<td>pipe (infile, outfile);</td>
</tr>
<tr>
<td>解說</td>
<td>與fork合用,給父進程和子進程提供通信的方式。送到outfile文件變量的信息可以通過infile文件變量讀取。步驟:<br>1、調用pipe<br>2、用fork將程序分成父進程和子進程<br>3、一個進程關掉infile,另一個關掉outfile</td>
</tr>
<tr>
<td>例子</td>
<td>pipe (INPUT, OUTPUT);<br>$retval = fork();<br>if ($retval != 0) {<br> # this is the parent process <br> close (INPUT);<br> print ("Enter a line of input:\n");<br> $line = <STDIN>;<br> print OUTPUT ($line);<br>} else {<br> # this is the child process<br> close (OUTPUT);<br> $line = <INPUT>;<br> print ($line);<br> exit (0);<br>}<br></td>
</tr>
<tr>
<td>結果輸出</td>
<td>$<br>program<br>Enter a line of input:<br>Here is a test line<br>Here is a test line<br>$</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>exec</td>
</tr>
<tr>
<td>調用語法</td>
<td>exec (list);</td>
</tr>
<tr>
<td>解說</td>
<td>與system類似,區別是啟動新進程前結束當前程序。常與fork合用,當fork分成兩個進程后,子進程用exec啟動另一個程序。</td>
</tr>
<tr>
<td>例子</td>
<td>
</td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>syscall</td>
</tr>
<tr>
<td>調用語法</td>
<td>syscall (list);</td>
</tr>
<tr>
<td>解說</td>
<td>調用系統函數,list第一個元素是系統調用名,其余為參數。<br>如果參數是數字,就轉化成C的整型數(type int)。否則傳遞字符串的指針。詳見UNIX的幫助或Perl文檔。<br>使用syscall必須包含文件syscall.pl,即:<br> require ("syscall.ph"); </td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<a name="1.2">2、進程終止函數<br><br>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>die</td>
</tr>
<tr>
<td>調用語法</td>
<td>die (message);</td>
</tr>
<tr>
<td>解說</td>
<td>終止程序并向STDERR輸出錯誤信息。message可以為字符串或列表。如果最后一個參數不包含換行符,則程序文件名和行號也被輸出。</td>
</tr>
<tr>
<td>例子</td>
<td>die ("Cannot open input file");</td>
</tr>
<tr>
<td>結果輸出</td>
<td>Cannot open input file at myprog line 6.</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>warn</td>
</tr>
<tr>
<td>調用語法</td>
<td>warn (message);</td>
</tr>
<tr>
<td>解說</td>
<td>與die類似,區別是不終止程序。</td>
</tr>
<tr>
<td>例子</td>
<td>warn("Danger! Danger!\n");</td>
</tr>
<tr>
<td>結果輸出</td>
<td>Danger! Danger!</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>exit</td>
</tr>
<tr>
<td>調用語法</td>
<td>exit (retcode);</td>
</tr>
<tr>
<td>解說</td>
<td>終止程序并指定返回值。</td>
</tr>
<tr>
<td>例子</td>
<td>exit(2);</td>
</tr>
<tr>
<td>結果輸出</td>
<td>無</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>kill</td>
</tr>
<tr>
<td>調用語法</td>
<td>kill (signal, proclist);</td>
</tr>
<tr>
<td>解說</td>
<td>給一組進程發送信號。<br>signal是發送的數字信號,9為殺掉進程。<br>proclist是進程ID列表。詳見kill的UNIX幫助。</td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<a name="1.3">3、進程控制函數</a><br>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>sleep</td>
</tr>
<tr>
<td>調用語法</td>
<td>sleep (time);</td>
</tr>
<tr>
<td>解說</td>
<td>將程序暫停一段時間。time是停止的秒數。返回值為實際停止的秒數。</td>
</tr>
<tr>
<td>例子</td>
<td>sleep (5);</td>
</tr>
<tr>
<td>結果輸出</td>
<td>無</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>wait</td>
</tr>
<tr>
<td>調用語法</td>
<td>procid = wait();</td>
</tr>
<tr>
<td>解說</td>
<td>暫停程序執行,等待子進程終止。<br>不需要參數,返回值為子進程ID,如果沒有子進程,返回-1。</td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>waitpid</td>
</tr>
<tr>
<td>調用語法</td>
<td>waitpid (procid, waitflag);</td>
</tr>
<tr>
<td>解說</td>
<td>暫停程序執行,等待特定的子進程終止。procid為等待的進程ID</td>
</tr>
<tr>
<td>例子</td>
<td>$procid = fork();<br>if ($procid == 0) {<br> # this is the child process<br> print ("this line is printed first\n");<br> exit(0);<br>} else {<br> # this is the parent process<br> waitpid ($procid, 0);<br> print ("this line is printed last\n");<br>}</td>
</tr>
<tr>
<td>結果輸出</td>
<td>$ program<br>this line is printed first<br>this line is printed last<br>$</td>
</tr>
</table></p>
<a name="1.4">4、其它控制函數</a><br>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>caller</td>
</tr>
<tr>
<td>調用語法</td>
<td>subinfo = caller();</td>
</tr>
<tr>
<td>解說</td>
<td>返回調用者的程序名和行號,用于Perl Debugger。<br>返回值為三元素的列表:<br>1、調用處的包名<br>2、調用者文件名<br>3、調用處的行號</td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>chroot</td>
</tr>
<tr>
<td>調用語法</td>
<td>chroot (dir);</td>
</tr>
<tr>
<td>解說</td>
<td>改變程序的根目錄,詳見chroot幫助。</td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>local</td>
</tr>
<tr>
<td>調用語法</td>
<td>local($variable);</td>
</tr>
<tr>
<td>解說</td>
<td>在語句塊(由大括號包圍的語句集合)中定義局域變量,僅在此語句塊中起作用,對其的改變不對塊外同名變量造成影響。<br><b>千萬不要在循環中使用,否則每次循環都定義一個新的局域變量!</b></td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>times</td>
</tr>
<tr>
<td>調用語法</td>
<td>timelist = times</td>
</tr>
<tr>
<td>解說</td>
<td>返回該程序及所有子進程消耗的工作時間。<br>返回值為四個浮點數的列表:<br>1、程序耗用的用戶時間<br>2、程序耗用的系統時間<br>3、子進程耗用的用戶時間<br>4、子進程耗用的系統時間</td>
</tr>
<tr>
<td>例子</td>
<td> </td>
</tr>
<tr>
<td>結果輸出</td>
<td> </td>
</tr>
</table></p>
<a name="2">二、數學函數</a><br>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>sin</td>
</tr>
<tr>
<td>調用語法</td>
<td>retval = sin (value);</td>
</tr>
<tr>
<td>解說</td>
<td>參數為弧度值。</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>cos</td>
</tr>
<tr>
<td>調用語法</td>
<td>retval = cos (value);</td>
</tr>
<tr>
<td>解說</td>
<td>參數為弧度值。</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
<tr>
<td>函數名</td>
<td>atan2</td>
</tr>
<tr>
<td>調用語法</td>
<td>retval = atan2 (value1, value2);</td>
</tr>
<tr>
<td>解說</td>
<td>運算并返回value1除以value2結果的arctan值,單位為弧度,范圍在-PI~PI。</td>
</tr>
<tr>
<td>應用例:<br>角度轉化成弧度子程序。</td>
<td>sub degrees_to_radians {<br> local ($degrees) = @_;<br> local ($radians);11: <br> $radians = atan2(1,1) * $degrees / 45;<br>}</td>
</tr>
</table></p>
<p><table border="1" cellspacing="1">
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -