網路與通訊-

Download Report

Transcript 網路與通訊-

網路與通訊 -- 實習課
PERL 程式設計
PERL 使用環境的建立
Windows 的使用環境建立

編輯軟體
記事本
Ultra editor
Power Builder

PERL 的編譯器
ActivePERL

http://www.activestate.com
PERL 簡介
Perl

Practical Extraction and Report Language
實務操作抽取與報告語言
Perl 可以做什麼呢?

系統管理、網站設計、資料庫處理、文件處
理、圖型使用介面、電腦病毒防治、垃圾郵件
防堵、駭客入侵、網路程式設計
(FTP/Webmail/Mail/DNS....)等等
PERL 程式的執行
命令提示字元底下


切換到 PERL 檔案存放的工作目錄
執行 “perl 檔案名稱”
假設是存成 hello.pl 則執行方式為

perl hello.pl
加上 –w 的參數可以顯示警告訊息

perl -w hello.pl
Demo (hello2.pl)
對 PERL 的基本認識
區分大小寫

變數名稱、函數名稱
註解使用方式



註解符號 #
一次只能註解一行
特別用法 __END__
表示整份程式執行到這裡就算結束了
DEMO (hello3.pl)
PERL 的變數型態
變數名稱


第一個字元一定是英文字或底線( _ )
變數不需要宣告立即可以使用
純量變數 (Scalar)

變數名稱前加上 $ 字元
陣列變數 (Array)

變數名稱前加上 @ 字元
雜湊變數 (Hash)

變數名稱前加上 % 字元
PERL 陣列的使用
假設變數名稱為 aryTest
變數名稱前加上 @ 符號

@aryTest
陣列起始索引值為 0

最終索引值存在 $#aryTest 之中
陣列長度可自由變動


pop、push:從陣列尾端刪除、新增資料
shift、unshift :從陣列前頭刪除、新增資料
Demo (array.pl)
Perl 雜湊的使用
雜湊是由 Key 和 Value 所組成的一組資料

A123456789 => 王小明
假設變數名稱為 hashTest
變數名稱前加上 % 符號

%hashTest
雜湊的處理

keys、values、each、exists、delete
Demo (hash.pl)
元素值的取用
陣列變數


格式:$陣列名稱[索引值]
範例:$aryTest[0], $aryTest[1], …
雜湊變數


格式:$雜湊名稱{鍵值}
範例:$hashTest{key value}
Demo (getElement.pl)
PERL 的資料型態
數值型態

整數
1, 0, -1, 37999

浮點數
3.1415, 4.00, 1.96E24, -3.2E-18

八進位數 (以 0 開頭)
012 (為十進位的 10)

十六進位數 (以 0x 開頭)
0x12 (為十進位的 18)

二進位數 (以 0b 開頭)
0b110 (為十進位的 6)
PERL 的資料型態
非數值型態

字串
字串是以雙引號或單引號括起來
雙引號和單引號的差別




null
在單引號中,跳脫符號沒有功用
在單引號中,無法做變數代換
Demo (string.pl)
PERL 資料的操作
數值


加(+)、減(-)、乘(*)、除(/)
餘數除法(%)、乘冪(**)
非數值


字串的合併:點( . )這個符號
字串的重覆:x 這個符號
Demo (dataOper.pl)
PERL 的函數
函數格式

函數名稱規則和變數名稱規則一樣
sub function_name {
statement
…
}
函數呼叫
&function_name([arg1[, arg2[, …]]]);
PERL 的函數 (續)
參數的取得

利用 shift 指令
Demo (function.pl)
PERL 的函數 – 遞迴呼叫
(Recursive Call)
函數呼叫函數,而且最後一個函數又呼叫到一開
始呼叫的函數,稱之為遞迴呼叫。

假設有函數 f1, f2, f3;f1 呼叫 f2,f2 呼叫 f3,f3 又呼
叫到 f1。
外部遞迴

呼叫外部函數,最後又呼叫到自己,如上一個例子
內部遞迴


函數呼叫函數本身
如函數 f1,在 f1 函數中有一行是呼叫到 f1
遞迴呼叫一定要有終止遞迴的條件
PERL 練習作業
印出下列圖形
*
***
*****
*******
*****
***
*
*
**
***
****
*****
*
**
***
****
*****
注意事項


作業禁止抄襲 (抄襲與被抄襲者成績都要被打折)
程式中所用到的技巧越多,加分越多
如:使用到遞迴、印出星星的深度可由呼叫者自由設定等
PERL 的檔案處理
使用到的函數指令

open、sysopen、close、<>
檔案開啟

使用open指令
常用格式:oepn (File_Handle, Expression);
範例:




open(INPUT, “< list.txt”); # 唯讀模式
open(INPUT, “+< list.txt”); #讀寫模式
open(OUTPUT, “> list.txt”); # 寫入模式
…
Demo (fileOper_read.pl)
PERL 的檔案處理 (續)
檔案開啟

使用 sysopen 指令
格式:

sysopen (File_Handle, Filename, Open_mode,
Permission_mode);
Open_mode:檔案開啟的模式





O_RDONLY => 唯讀
O_WRONLY => 唯寫
O_RDWR => 可讀可寫
O_APPEND => 增加資料到檔案尾端
…
參考網址

http://www.fanqiang.com/a4/b3/20011227/07100020_b.html
PERL 的檔案處理 (續)
檔案開啟

使用 sysopen 指令
Permission_mode


這個參數適用在 UNIX 的主機上
範例:0600
使用 sysopen 指令前一定要宣告所使用的程式庫

use Fcntl;
Demo (fileOper_read_sysopen.pl)
PERL 的檔案處理 (續)
檔案關閉


使用 close 指令
格式:close(File_Handle);
檔案讀取


使用 <> 指令
格式:@lines = <File_Handle>
因為會直接回傳所有的檔案資料,要用陣列承接
PERL 的檔案處理 (續)
檔案寫入



使用 print 指令
格式:print File_Handle Data
Demo (fileOper_write.pl)
PERL 的正規表示法 - Regular
Expression
是由字元組成的樣式(Pattern),用來比對資
料,看看究竟符合或不符合這個樣式,然
後可做進一步的處理。
樣式是由字元集所組成的

常用的字元集定義
. 代表任意字元,但不包括換行字元 \n
* 代表比對成功的次數是 0 或 0 次以上
+ 代表比對成功的次數是 1 或 1 次以上
? 代表比對成功的次數是 0 或 1 次
PERL 的正規表示法 - Regular
Expression (續)
樣式是由字元集所組成的

常用的字元集定義
^ 代表字串開頭
$ 代表字串結尾
\ 將其後的字元跳脫,使其回歸原字元的涵義

如:\\ , \. , \@ , \? , \*
| 樣式中的 或
( ) 群集
[ ] 字元類別

參考網址
http://www.perldoc.com/perl5.8.0/pod/perlre.html
PERL 的正規表示法 - Regular
Expression (續)
樣式比對 (Pattern Match)


格式:m/Pattern/[修飾子]
(簡寫成 /Pattern/[修飾子])
修飾子
i
m
o
s
x
g
不計大小寫
視字串為多列
只編譯一次,以加快迴圈處理速度
當含有換列符號時,仍視為一列
允許含有註解,並忽略空白
全域比對
PERL 的正規表示法 - Regular
Expression (續)
樣式比對 (Pattern Match)

使用的指令
=~ 表示比對符合
!~ 表示比對不符合
$& 代表最後一次成功比對的字串
$` 代表比對到的字串之前半段所有字串
$’代表比對到的字串之後半段所有字串
Demo (regular_match.pl)
PERL 的正規表示法 - Regular
Expression (續)
樣式取代 (Pattern Substitution)


格式:s/Pattern/New String/[修飾子]
修飾子:
樣式比對中的修飾子都可在此使用
e 代表將欲置換的字串視為一運算式
Demo (regular_substitution.pl)
PERL 的正規表示法 - Regular
Expression (續)
樣式轉換 (Pattern Transfer)


格式:tr/Pattern/New String/[修飾子]
修飾子:
d 刪除字元
c 將不在指定字元集中的字元(包括換行字元)
換成欲轉換的字元集
s 將重覆字元刪除
Demo (regular_transfer.pl)