發新話題

網路管理語言 Perl 入門與實作

網路管理語言 Perl 入門與實作

1.前言
2. Perl on KNOPPIX ! 使用簡介
   2.1 開機
   2.2 設定
   2.3 啟動 Apache
   2.4 使用 Emacs
   2.5 使用樣版
   2.6 在其它帳號套用樣版
3. Perl 簡介
   3.1 Perl 是什麼?
   3.2 Hello Perl!
   3.3 Perl 的命令列選項
4. Perl 的資料型態
   三種資料型態
   4.1 純量(scalars)
      4.1.1 數值
      4.1.2 數值計算
      4.1.3 運算子
      4.1.4 字串
      4.1.5 跳脫字元(escapes)
      4.1.6 單引號和雙引號的區別
      4.1.7 字串的運算
      4.1.8 純量變數
      4.1.9 顯示純量變數內容
      4.1.10 數值和字串也可以運算
      4.1.11 運算的順序
      4.1.12 比較算符
      4.1.13 真假值
      4.1.14 undef 的應用
      4.1.15 邏輯運算
      4.1.16 HERE Document
      4.1.17 字串的操作
                 子字串
                 字串的長度
                 轉換大小寫
                 找尋子字串
                 找尋子字串的最後位置
                 傳回 ASCII 值
      4.1.18 亂數
      4.1.19 時間的處理
      4.1.20 編碼加密處理
   4.2 陣列
      4.2.1 串列
      4.2.2 產生陣列
      4.2.3 走過每一個陣列元素
      4.2.4 陣列的操作
      4.2.5 pop
      4.2.6 push
      4.2.7 shift
      4.2.8 unshift
      4.2.9 拷貝一個陣列
      4.2.10 將一個陣列逆轉
      4.2.11 將一個陣列排序
      4.2.12 將陣列以數值大小排序
   4.3 雜湊
      4.3.1 雜湊的定義
      4.3.2 reverse 一個雜湊
      4.3.3 雜湊的處理
      4.3.4 keys
      4.3.5 values
      4.3.6 each
      4.3.7 exists
      4.3.8 delete
   4.4 特殊符號
   4.5 變數的範圍
   4.6 引號整理
   4.7 使用預設值
   4.8 範例
   5. 流程控制
      5.1 if 控制結構
               用例
      5.2 unless 控制結構
               用例
      5.3 until 控制結構
      5.4 for 控制結構
      5.5 while 控制結構
      5.6 foreach 控制結構
              用例
      5.7 迴圈控制
      5.8 三元運算子
   6. 檔案處理
      6.1 檔案代碼
      6.2 開檔關檔
      6.3 檔案測試
      6.4 刪除檔案
      6.5 改變檔名
      6.6 改變檔案權限
      6.7 改變檔案擁有者
      6.8 取得檔案屬性
      6.9 拷貝檔案
      6.10 目錄處理
      6.11 開新目錄
      6.12 刪除目錄
      6.13 進入目錄中
      6.14 標準輸入/輸出
      6.15 STDIN
      6.16 角符: <>
      6.17 萬用檔名展開
      6.18 命令列引數
   7. 副程式
      7.1 副程式的寫法
      7.2 引數:傳入值
      7.3 叫用副程式
      7.4 傳回值
      7.5 時間副程式
   8. 正規表示式
      8.1 樣式
      8.2 樣式字元集
      8.3 比對
      8.4 置換
      8.5 轉換
   9. 參考
      9.1 常見的參考
      9.2 副程式傳參考
   10. 模組
      10.1 安裝模組
      10.2 使用模組
      10.3 查閱模組手冊
   11. 簡易資料庫
      11.1 使用 DB_File
      11.2 用例
   12. CGI 程式設計
      12.1 撰寫 CGI 程式需要那些工具?
      12.2 CGI 程式設計如何入門?
      12.3 第一支 CGI 程式
      12.4 執行方法
      12.5 如何取得傳遞資料?
      12.6 如何將傳遞資料解碼?
      12.7 如何製作簡易訪客留言板?
      12.8 CGI 程式常見疑難
   13. 系統記錄檔分析
   14. 大量刪帳號
   15. 過濾求職信病毒
   16. 掃瞄
   17. 網域名稱系統
   18. 網蟲偵測
   19. 套件自動更新
   20. 讀取 DBF 檔
   21. 找尋大檔案
   22. 圖型介面
   23. 連接MySQL
   24. 樂彩號碼產生器
   25. 物件導向
   26. 網路程式設計
      26.1 偵測主機存活
      26.2 偵測程式
      26.3 觀看程式
      26.4 簡易郵寄程式
      26.5 通訊端點:Socket
      26.6 抓網頁程式
   27. 轉換 DOS/UNIX 檔案案格式
      27.1 DOS 轉成 UNIX
      27.2 UNIX 轉成 DOS
   28. 大量建帳號
         把 Perl 嵌在網頁裡
         什麼是 Mason?
附錄 1:Perl 的安裝
   在 Linux/BSD 平台安裝
   在 KNOPPIX 平台安裝
   在 Windows 平台安裝
附錄 2. 參考資源

[ 本帖最後由 蔡逸竹 於 2006-10-26 20:43 編輯 ]

TOP

1.前言

1.前言
"網路管理語言 Perl 入門與實作" 的主要目的,在於使本縣網管教師,至少能熟悉一種網路管理語言,使之應用在自動化工作上,以減輕網管工作的負擔。

本研習主要介紹 Perl 入門、資料處理、網管應用、CGI 程式、資料庫以及網路安全。



註:Perl on KNOPPIX ! 係由 OLS3 以 KNOPPIX bv1al 0709 版本為基礎,重新包裝成適合 Perl 入門練習的 Live CD,在此特別感謝 KNOPPIX 及 bv1al 版的作者。

若您對 KNOPPIX 有興趣,可參考 訪客無法瀏覽此圖片或連結,請先 註冊登入會員 中的中文手冊及討論區等資源。

OK! Let's GO! 讓我們一起進入 Perl 這個有趣的世界吧 ......

TOP

2. Perl on KNOPPIX ! 使用簡介

2. Perl on KNOPPIX ! 使用簡介
以下簡單介紹 Perl on KNOPPIX ! 這片光碟的用法:
2.1 開機
請進入主機 BIOS 中設定為 CD-ROM 開機,開機畫面如下:

Figure 1. KNOPPIX 開機畫面
請按 Enter 即可進入 Perl on KNOPPIX !

Figure 2. KNOPPIX 開機畫面 2

TOP

2.2 設定

2.2 設定
開機過程中,它會問你三個問題,第一個問題是問您要不要預先載入文鼎字型?載入之後大約耗用12MB的記憶體;第二問題問您的螢幕是否為液晶螢幕?第三個問題問您的滑鼠是否為滾輪滑鼠?請依您的現況回答 y 或 n,然後按 Enter 繼續,如下圖所示:

Figure 3. 三個設定問題

TOP

2.3 啟動 Apache
開機完成後,請啟動 Apache,方法如下:
1. 點按 rxvt 圖示,進入中文視窗。

Figure 4. rxvt
2. su 切換成 root 身份
3. 執行 apachectl start 即可啟動 Apache Web Server

Figure 5. 啟動 Apache
4. 點按書籤中的 Perl Intro,連到講義相關位址。

Figure 6. Mozilla 書籤

Figure 7. 上課相關位址

TOP

2.4 使用 Emacs
點按工作列中 "辦公用具",選按 Emacs:

Figure 8. 執行 Emacs

Figure 9. Emacs
這張 CD 已設定好 Emacs,採用 CPerl 模式,使 Emacs 支援 Perl,具有語法顏色識別、自動內縮判斷等功能。中文支援沒問題! 而且相當友善! (21.3 版起支援中文更為完備)

Figure 10. Emacs 支援 Perl 語法識別
以下是使用 Emacs 的幾個常用入門法,熟練它,差不多就可以順利操作 Emacs 了!
以下的第一個 c 代表 ctrl 鍵,c-x 代表按住 ctrl 再按住 x
1. 開檔:c-x c-f,接著輸入路徑檔名,若檔案不存在,則變成開啟新檔。若輸入的是目錄,則列出目錄內容,此時選擇檔案,按 Enter,即可開檔。
2. 存檔:c-x c-s
3. 離開 Emacs:c-x c-c
4. 中斷執行:c-g
5. 另存新檔:c-x c-w
6. 刪除游標開始至該列結束:c-k
7. 選取/複製:請用滑鼠即可
8. 貼上:c-y 或用滑鼠中鍵
9. 剪下:c-w
10.復原:c-_
11.至該列開頭:c-a
12.至該列結尾:c-e
13.至檔頭:Esc-
15.跳至 shell:Esc-x,然後輸入 shell,按 Enter
16.執行 shell 外部程式:Esc-!,然後輸入程式名稱,按 Enter
17.分割視窗:c-x 2
18.取消分割視窗:c-x 1
19.搜尋關鍵字:c-s
20.搜尋取代:Esc-%

TOP

2.5 使用樣版
這片光碟中的 Emacs 已為各位準好一個非常方便的樣版系統,使用法如下:

1. cd /home/knoppix/.templates

2. 將 TEMPLATE.c.tpl 拷貝成 TEMPLATE.pl.tpl

3. 修改 TEMPLATE.pl.tpl 的內容成您喜歡的樣版

4. 往後,在開啟副檔名為 .pl 時,Emacs 便會自動以 TEMPLATE.pl.tpl 為樣版,

幫您開好一個新檔,此新檔的內容就是您在 TEMPLATE.pl.tpl 中所設計的樣式。

非常好用!


注意! 此樣版系統不限 .pl 程式,舉凡 html、c、c++、java 等皆可適用,用途不限。光這項功能,價值不菲!

TOP

2.6 在其它帳號套用樣版
我已經把 CPerl 及 樣版包成一個 tarball,您可以將它套用到其它帳號使用,方法如下:
引用:
以 root 為例:

1. 下載 cperl.tar.gz

        ncftp ftp.tnc.edu.tw

        cd sysop/knoppix

        get cperl.tar.gz

2. 在 /root 中解壓

        tar xvzf cperl.tar.gz

3. 修改 .emacs,將

        (add-to-list 'load-path "/ramdisk/home/knoppix/elisp")

改成

        (add-to-list 'load-path "/root/elisp")

4. 修改 .templates 中的 TEMPLATE.pl.tpl 為您佳意的樣式

5. 重新啟動 Emacs 即可。
註1:上述過程可以套用到其它帳號,只要 elisp 路徑指定正確即可。

註2:上述 cperl.tar.gz 已包有 color Themes 功能,您只要由 Emacs 的 tools 選單中,點選 Color Themes 即可變換 Emacs 的顏色風格。

TOP

3. Perl 簡介
本章將對 Perl 做個簡單介紹。
3.1 Perl 是什麼?
Perl 是 Practical Extraction and Report Language(實務操作抽取與報告語言) 的簡稱。1987 年,Larry Wall 先生融合 AWK、Sed、C、shell 等語言的特色,創造了 Perl。最初 Larry Wall 在進行一項 WAN 的設定工作,他想要產生一份報告結果,但 AWK 做不到,不滿於 AWK sed shell 功能的不足,Larry Wall 發明了 Perl,並且開放出來給大家使用。
Perl 的出現,讓想要偷懶的管理者可以用非常輕鬆的方式完成工作。同樣一件事若用 C 來寫可能要幾百行甚至幾千行程式碼,但用 Perl 來寫可能只要幾十行就結束了,剩下的時間,當然可以用來偷偷懶,做一些工作之外比較有趣味的事情囉。後來大家都戲稱 Perl 是懶惰的程式設計師最愛用的語言,事實上,這也是 Perl 的設計風格之一。
Perl 最初僅著眼於文件(text)的處理,但因為實在太好用了,許多人要求 Larry Wall 先生加這個加那個,經過不斷的改良精進,發展至今,Perl 變成一個跨平台、十項全能、應用層面無所不包的重要語言,說它是一種通用目的高階程式語言,一點兒也不為過。
那麼,Perl 可以做什麼呢?舉凡:系統管理、網站設計、網路程式設計(FTP/Webmail/Mail/DNS....)、資料庫處理、文件處理、圖型使用介面、電腦病毒防治、垃圾郵件防堵、破解/防護、網路安全、駭客入侵等等.... 哇! 超能力! 有人說,現在網路管理者,不會寫 Perl 也要會用一點 Perl。可見 Perl 的重要性了! (事實上許多駭客,都喜歡用 Perl 來寫攻擊程式)
這麼強大的語言,會不會難用呢? 不會! Perl 不但功能完整而且相當容易使用、效率也不錯喔!
Perl 是直譯式的語言,寫好之後,馬上就可以執行,不必像 C 語言必須經過編譯、組譯、連結等冗長的過程,因此開發週期較短,也較為輕鬆。雖然 Perl 是直譯式的,但它的效能不錯,主要是因為 Perl 並非逐列直譯,Perl 執行前會先編譯為一種中間bytecode,然後再來執行。因此它有直譯式語言開發快速的優點,卻有編譯語言效率的優點。我們可以說 Perl 既是直譯又是編譯式的。
除此之外,Perl 自第 5 版之後,支援物件導向設計,具模組功能。Perl 的模組簡明易用,而且 Perl 的社群非常活躍,產量豐富,幾年下來,累聚非常龐大的模組程式庫,我們稱之為 CPAN (Comprehensive Perl Archive Network)。
通常,如果我們想要解決某一方面的問題時,都會先到 CPAN 程式庫去溜溜,看看是否有前輩已經寫出相關的模組?若有,就不再重新發明輪子,直接套用,或繼承之,做局部修改,即可輕鬆解決您所遇到的問題。
CPAN 可以說是目前全世界最豐富的模組函式庫之一,使用 Perl 的人就是這麼幸福!
Perl 要錢嗎?不用,Perl 不但免費而且跨平台,現今要找到一個平台不支援 Perl 的,恐怕很少了。

Perl 的主要站台:訪客無法瀏覽此圖片或連結,請先 註冊登入會員
目前由有名的書商 訪客無法瀏覽此圖片或連結,請先 註冊登入會員
大力支持。
Perl 最新的穩定版是 5.8.0,支援 unicode 喔! 而 Perl 的第六個版本:Perl 6 目前則已進入開發階段。Perl 6 採用 parrot 引擎,parrot 的網址:訪客無法瀏覽此圖片或連結,請先 註冊登入會員
,parrot 是一個虛擬機器,可以有效地執行直譯語言的 bytecode,將來除了 Perl 6 之外,其它語言也可以通過 parrot 來執行,比如 Python、Java。
註 1:教網中心有收集完整的 CPAN,位址:訪客無法瀏覽此圖片或連結,請先 註冊登入會員

TOP

3.2 Hello Perl!
現在就讓我們來寫支 Perl 程式吧! 您會發現寫 Perl 程式,就是這麼容易!
引用:
#! /usr/bin/perl

# 檔名: hello.pl
# 用途: 這是一支簡單的 Perl 示範程式
#
# 第一列以 #! 開頭,表示告訴 Shell 要用 /usr/bin/perl 程式來執行這個 script 檔
#
# 其它以 # 開頭,則為註解,Perl 不予處理。
#

print "Hello Perl !!\n";
執行前,應設妥執行權(chmod +x 或 chmod 755)。執行結果如下:
引用:
[ols3@p4 sample]$ chmod +x hello.pl
[ols3@p4 sample]$ ./hello.pl
Hello Perl !!
註 1:Perl 程式,我們通常稱為 "Perl script",中文稱為 "Perl 腳本" (抱歉,這個譯名我也不很欣賞!)。本講義將以 Perl script 來統一稱呼。

註 2:若不設執行權,直接用 perl hello.pl 執行亦可。

註 3:Perl 的路徑未必在 /usr/bin/perl,您可以先用 which perl 指令找找看 Perl 的路徑為何?通常,如果是用 rpm/deb/pkg等套件安裝的,Perl 大都在 /usr/bin/perl,若是用 tarball 原始碼編譯的,則大都位在 /usr/local/bin/perl

註 4:每一個 perl 的敘述要用 ; 號做為結束符號。

註 5:執行前,可以先用 perl -c hello.pl 來檢查 perl 程式語法的正確性,如下所示:
引用:
[ols3@p4 sample]$ perl -c hello.pl
hello.pl syntax OK

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。