面對 Solaris 上定時統計 MySQL 並生成 XML 配置報表的需求,Bash 處理 XML 乏力,Perl 憑藉強大的文本處理與豐富模組(CPAN)成為不二之選。本文以 C 程序員視角,對比語法差異,梳理開發環境搭建、核心模組安裝、關鍵語法映射與常見坑點,助你「邊學邊用」快速交付。
| 平台 | 編輯器推薦 | 關鍵配置 |
|---|---|---|
| Windows | UltraEdit / Source Insight | 1. 安裝 ActivePerl(免費) 2. 導入 Perl AutoComp 自動完成 3. 載入語法高亮 Tag 文件 4. 配置工具鍵 C:\Perl\bin\perl.exe "%F" 捕獲輸出 |
| Unix/Linux/Solaris | vi / vim | 系統通常預裝 Perl,直接可用 |
ppm> search DBI
ppm> install DBI
ppm> install DBD::MySQL
perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::MySQL
提示:安裝 DBD::MySQL 需將 mysql/bin 加入 PATH,否則找不到 mysql_config。
XML::DOM(W3C 標準樹模型)或 XML::Simple(映射為 Perl 數組),按需選擇。| 語法元素 | C | Perl | 關鍵差異 |
|---|---|---|---|
| 註釋 | /* ... */ | # ... | 僅單行註釋 |
| 變量聲明 | int a; char c='A'; int x[10]; | my ($a,$b,$c); my $c='A'; my @x; my %h; | my 作用域限定;$標量 @數組 %哈希 |
| 字符串 | "hello\n" vs 'hello\n' | 同 C,雙引號插值、單引號字面量 | |
| 一維數組 | 固定長度 arr[10] | 動態 @arr,$arr[0] 取值,@arr[3..5] 切片 | |
| 多維數組 | arr[10][10] | 引用實現:$arr[0][1] 實為 $arr[0]->[1] | |
| 指針/引用 | int *x=&c; | my $x=\$c; 取引用,$$x 解引用 | |
| 函數定義 | int max(int x,int y){...} | sub max { my ($x,$y)=@_; ... } | 參數自動裝入 @_,return 可省略 |
| 條件語句 | if(x>0) x=0; | if($x>0){$x=0;} $x=0 if $x>0; $x=0 unless $x<=0; | 後置 if/unless,unless 為「除非」 |
| 循環 | for/while | for/while 同 C,foreach @ary 遍歷更優雅 |
#!/usr/bin/perl -w # 開啟運行警告
use strict; # 強制聲明變量、禁止符號引用、裸字自動加引號
建議所有腳本均啟用,編譯期捕獲拼寫錯誤、未聲明變量等低級錯誤。
#!/usr/bin/perl -w
use strict;
use Getopt::Std; # 命令行解析
main(); # 入口調用
sub main {
ProcessOptions();
# 業務邏輯...
}
sub ProcessOptions {
my $VERSION = '1.0.0';
my $USAGE = "pp.pl [-v | -c configfile]\n";
my $opts = {};
die $USAGE unless getopts("c:v", $opts);
die $VERSION if $opts->{v};
$configfile = $opts->{c} ? $opts->{c} : 'config.xml';
}
@ARGV 含所有命令行參數。@_ 為參數數組,$_[0] 為首參。$_:foreach、print、正則匹配等隱式使用,極易混淆,建議顯式命名。die 'Error msg'; 或 die 'Msg' unless $cond;。printf("pi=%.6f", 355/113); 與 C 一致。=> 操作符:哈希定義時等同逗號,'Simon' => 'simon@email.com' 視覺上鍵值對應更清晰。\$var 取引用,$$ref 解引用;數組/哈希/函數均可引用。Net::*)、驗證碼(Authen::Captcha)、數據序列化(Storable)GD/Image::Magick)、加密、郵件、測試框架……「條條大路通羅馬」—— Perl 給你自由,也要求你自律。掌握核心語法、善用 CPAN、堅持 use strict,你就能駕馭這門「瑞士軍刀」語言,優雅解決實際工程問題。