熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 游戲開發 >> 正文

Perl 與 Python 之間的一些異同整理

2022-06-13   來源: 游戲開發 
關於 Perl 與 Python 的起源和特點

Perl 是 Practical Extraction and Report Language 的簡稱 年 Larry Wall 創建最初的目的是為了在 UNIX 上方便處理報表經過長期的發展已經成為一種全功能的程序設計語言當前最新的版本為 PerlPerl 作為一種自由而強大的編程語言其中心思想是 Theres More Than One Way To Do It(不只一種方法來做這件事 )即「 Tim Toady 」作為一種膠水型語言它具有強大的正則表達式和模式匹配功能以及靈活的數據結構如動態數組Hash 等在語法規則上借鑒了 C/C++BasicPascal 等語言其不足之處在於存在一些冗余語法代碼的可讀性較差

Python 是一種基於面向對象的解析性交互式的開源編程語言它起源於 年末由 CWI(阿姆斯特丹國家數學和計算機科學研究所)的研究員 Guido van Rossum 創立 年初公開發行其開源式的發行方式促進了 Python 的較快發展目前已經形成了一個強大的社區力量Python 開發者的哲學是用一種方法最好是只有一種方法來做一件事Python 具有簡單易學代碼規范語法簡單可移植性強支持多平台類庫豐富等優點
Perl 和 Python 都是開源的但其哲學理念卻剛好相反因此常被人們將這兩種語言放在一起進行比較下面的篇章將從基本數據類型控制流函數面向對象文本處理等方面對這兩種語言進行簡單的比較和鑒別

Perl 與 Python 的基本數據類型

腳本語言支持多種數據類型變量無需事先申明類型根據值來動態確定一個變量在程序中可以根據上下文環境的不同存儲不同類型的值

Perl 支持的基本數據類型包括標量數組哈希在定義的時分別用 $@% 表示

標量 (scalar)標量是 Perl 中最簡單的數據類型大多數標量由數字或字符串組成其中數字類型如整數浮點數等字符串有單引號和雙引號內兩種形式對長度沒有限制兩者的區別在於在單引號內 \n 不代表換行而代表反斜線和 n 這兩個字符雙引號內字符串則可以通過反斜線進行轉義字符串的操作符有 拼接操作符和 x 重復操作符等
數組 (Arrays)數組用 @ 定義如 my @array=(abcd); 訪問數組的元素用 $array[]在 perl 中數組也可以當做堆棧來處理支持的操作符包括 pop 和 pushshft 和 unshift兩組操作的區別在於前者對數組的尾部進行處理而 shift 和 unshift 則針對數組的頭部進行處理pop 得到的是數組的最後一個元素如 pop(@array)= d如果數組為空則返回 undef而 shift(@array)=a
哈希也稱作關聯數組是根據關鍵碼值 (Key value) 而直接進行訪問的數據結構用 % 定義如 %my_hash=(key=>name=>zhangage=>)其中鍵以字符串表示Hash 可以是任意大小
與 hash 相關的函數有
keys返回 hash 的鍵列表 my @keylist = keys %hash
value返回值列表 my @valuelist = values %hash
each用兩個元素的列表返回鍵值對

  復制代碼 代碼如下:

  while(($key$value)= each %hash)
{
print $key =>$value\n;
}


Python 支持五種基本數據類型數字 (Numbers)字符串 (String)列表 (List)元組 (Tuple) 和字典 (Dictionary)其中數字和字符串和 perl 中的標量對應列表和數組對應元組可以看做是不可變的列表字典和 hash 對應

數字 (Numbers)Python 支持五種基本數字類型分別為 int( 有符號整數 ) long( 長整數 ) bool( 布爾值 ) float( 浮點數 ) complex( 復數 )
字符串 (String)Python 與 Perl 一樣也支持單引號和雙引號字符串但與 Perl 不同轉義字符在單引號中也會起作用同時 python 還支持三引號字符串它允許一個字符串跨多行字符串中可以包含換行符制表符以及其他特殊字符三引號字符串常用於注釋或者形成文檔字符串支持成員操作符 innot in連接操作符 + 以及重復操作符 *Python 字符串可以當做 list支持切片操作符 [][:] 和反向索引如下
如 aString=abcd則 aString[] 的值為 aaString[:]=bc反向索引 aString[]=d
列表 (List)Pyhon 中的列表與 Perl 中的數組相對應列表的定義使用 [] 如 li = [a b mpilgrim z example] 支持動態增加和刪除元素以及切片操作
增加元素可以使用 liappend(test)liinsert(new) 以及 liextend([fggf])
刪除元素使用 liremove(f) 和 lipop() 但需要注意的是 remove 僅刪除首次出現的而 pop 會刪除 list 最後的一個元素然後返回刪除的元素的值
元組 (Tuple)元組和列表非常相似但用()表示並且元組是不可變的
字典 (Dictionary)字典跟 Perl 中的 hash 一樣定義了鍵值對之間一對一的關系變量可以任意取名Python 會在內部記錄其數據類型定義一個字典D={name:JonFamily:SH} 字典中的 key 是不能重復的並且大小寫敏感同時字典中的元素是無序的字典也支持增刪操作往字典中添加元素 D[age]= 刪除元素 del D[name]如果需要刪除所有元素可以使用 Dclear() 或者 del D 刪除整個字典

Perl 與 Python 的控制結構

在控制結果方面Perl 較 Python 豐富除了支持傳統的 if while for 控制結構還支持 until unless foreach 等Python 的控制結構相對要少一些但已經能夠滿足語言的要求本節對這些控制結構進行詳細比較

If 控制結構

Perl 與 Python 都支持 if ifelse ifelse if else 三種結構兩者在語法上基本類似但與 Python 不同的是 Perl 中沒有 boolean 類型零和空表示 False其余表示 True而 Python 中除了()[]{}None 為 False 之外其他的都是 True同時 Python 直接用縮進表示 block 塊

if 控制結構
Perl Python if if (expression) {
true_statement;
} if expression:
if_suite
ifelse if (expression) {
true_statement;
} if expression:
if_suite
else:
else_suite Ifelse ifelse if (expression_A) {
A_true_statement;
} elseif (expression_B) {
B_true_statement;
} else {
false_statement;
} if expression:
if_suite
elif expression:
elif_suite
else:
else_suite

  Perl 中還支持 unless 條件控制語句基本語法如下

  unless (expression) {
stmt_; }

  unless 和 if 不同之處在於當條件表達式的值為假的時候才執行同時 unless 後面還能跟 else 語句

  復制代碼 代碼如下:

  unless($mon =~/^Feb/){
print This month has at least thirty days\n;
}else{
print Do you see whats going on here?\n;
}


循環控制結構

For 循環
Perl 中的 for 循環除了支持傳統的 for 循環即 for ( 表達式 ; 表達式 ; 表達式 ) 還支持 foreach 語句基本語法為

  復制代碼 代碼如下:

  foreach $i (@aList) {
stmt_;
}



python 不支持傳統的 for 循環但是提供了強大的循環結構可以遍歷序列成員同時 for 循環後面也可以接 else 語句基本語法如下

for inter_var in iterable:
suite_to_repeat
else:
else_statement



while 循環
Perl 循環控制結果還支持 while 和 dowhile 以及 until 形式until 與 while 結構相似區別在於 unitl 會在條件為假的時候重復執行until 語法如下

  復制代碼 代碼如下:

  until(expression)
{
statement;
}



而 python 只支持 while 形式但 python 可以在 while 後面接 else 語句語法如下

While condition:
statements
else:
statements



循環控制符

Perl 有三個循環控制操作符分別為 Last next redo

last立即終止循環類似於 c 中的 break在多層循環中只對 last 所在的當前循環塊有效
next立刻結束當前這次迭代
redo將控制返回本循環的頂端不經過條件測試也不會進去下一次迭代循環而是重新執行本循環塊它與 next 最大的區別在於 next 會正常繼續下一次迭代而 redo 會重新執行本次迭代

Python 也有三個循環控制操作符分別為 break continue pass 語句

break與 C 中的 break 類似
continuecontinue 語句並不會退出循環結構而是立即結束本次循環重新開始下一輪循環也就是說跳過循環體中在 continue 語句之後的所有語句繼續下一輪循環
pass一般作為占位符或者創建占位程序pass 語句不會執行任何操作

Perl 與 Python 的函數

Perl 和 Python 都支持函數可以傳遞參數以及在程序中對函數進行調用等下面從函數的定義調用返回值以及參數傳遞等方面對這兩者進行比較
Perl 與 Python 函數比較

Perl Python 定義

 基本語法 sub functionName{
       statement;
[return value]
     }

基本語法
def functionName(argarg[]):
statement
[return value]

內嵌函數
Python 支持內嵌函數 其方法是在外部函數的定義體內定義函數 但整個函數體都在外部函數的作用域之內
def outfun():
def innerfun():
Print inner fun test
print out fun test 返回值 使用 return 語句顯示返回如果沒有 return默認返回最後一次運算的結果 使用 return 語句顯示返回沒有 return 語句默認返回為 None如果函數返回多個對象python 把他們聚集起來並以一個元組返回 調用 & 函數名(參數 參數 如果聲明在前可以省略 &如果用戶所定義的子過程與內置函數重名則不能省略 &
如下例必須使用 &chomp 調用
sub chomp{
print it is my chomp\n;
}

直接采用 函數名(參數 參數
函數名(參數名 = 值參數名 = 值 ) 函數參數

在子程序調用的後面加上被括號圈引的列表表達式即可所有的參數都會自動存儲為 @_ 中其中第一個參數為 $_[] 第二個參數存儲 $_[]
傳遞引用在參數前加入 \ 表示為引用

按照參數聲明的關鍵字順序直接傳遞
通過關鍵字參數 testFun(par=par=
默認參數
> Python 在傳遞參數的時候支持默認參數規則是所有的位置參數必須出現在任何一個默認參數之前
def fun(argdefarg=vardefarg=) 如果在調用的時候沒有給出參數值則會使用默認值

變長參數
一種方法是利用非關鍵字可變長參數 可變長的參數元組必須在位置和默認參數之後 帶元組的函數語法如下
def function_name([formal_args]*vargs_tuple):
function_body
其中 * 之後的形參將作為元組傳遞給函數

另外一種方法是利用關鍵字變量參數區別是在函數的參數變量裡使用 **
def dicVarArgs(argarg=default**theRest):
print formal arg: arg
print formal arg: arg
for eachXtrArg in theRestkeys():
print Xtra arg %s: %s % \(eachXtrArg str(theRest[eachXtrArg])) Perl 與 Python 的包與模塊

Perl 程序把變量和子程序的名稱存貯到符號表中Perl 的符號表中名字的集合就稱為 Perl 包 (package)定義語法為package mypack每個符號表有其自己的一組變量子程序名各組名字是不相關的因此可以在不同的 Perl 包中使用相同的變量名而代表的是不同的變量Perl 模塊有兩種來源一種是隨 Perl 發行版本一同打包的另外就是用 CPAN 中下載的Perl 模塊和包的概念並不清晰兩者有時可以混用在程序中使用模塊的操作稱為導入模塊導入模塊關鍵字 useuse ModuleName模塊被導入後其中的子程序和變量就可以直接使用了要取消一個已經導入了的模塊可以使用關鍵字 nono ModuleName
一個 py 文件就是一個 python 模塊把一堆相關的 python 模塊放在一個目錄下再加上一個 __init__py 文件就構成了一個 python 包在 Python 另一個程序中導入模塊用 import module 或者 from module import *兩者的區別在於import module 會導入 module 這個模塊裡的所有標識但是這些標識現在都在 module 名字空間下from module import * 也會導入 module 中所有標識但是標識放到在當前名字空間裡
導入模塊或包按下面順序進行路徑查找
當前目錄
環境變量 PYTHONPATH 所指的目錄列表 python 解釋器的安裝目錄
Perl 與 Python 中的 OOP
在 Perl 中類是 Perl 包含有提供對象方法的類而方法是 Perl 的子程序類名是其第一個參數對象是對類中數據項的引用在 Perl 中創建一個新類首先要創建一個包擴展名為 pm 在創建 perl 包的時候程序的最後一個必須為;否則該包不會被 Perl 處理

清單 創建 perl 的類和對象

  復制代碼 代碼如下:

  package person;
use strict;
sub new {
my $class = shift();
print(CLASS = $class\n);
my $self = {};
$self>{name} = shift();
$self>{sex} = shift();
bless $self $class;
return $self;
}
;
[html]
其中 new() 方法是對象的構造函數是創建該類的對象實例必須被調用的它返回該對象的引用將類名與引用相結合稱為bless一個對象其語法為bless YeReference [classname]
YeReference 是對被祝福的對象的引用classname 是可選項指定對象獲取方法的包名其缺省值為當前包名也可以通過函數 bless 來聲明一個構造函數
[code]
sub new
{
my $class = shift;
my $self = {};
bless $self $class;
return $self;
}


創建一個對象可以直接使用 new 關鍵字$object = new Person( mohand sam );
Perl 類中的方法就 Perl 的子函數規定第一個參數為對象或者被引用的包分為靜態方法和虛方法 虛方法通常首先把第一個參數 shift 到變量 self 或 this 中然後將該值作普通的引用使用一是通過該對象的引用 ( 虛方法 )一是直接使用類名 ( 靜態方法 )如上例中如果類 Person 中有 getContactList 則可以直接使用 $object>getContactList() 來調用該方法
Perl 支持重載當兩個不同的類中含有相同的方法名稱的時候可以用 :: 操作符指定使用哪個類中的方法
$mess = Qava::grind(wholelottabags);
Qava::grind($mess wholelottabags);
由於 Perl 采用了簡單的基於引用的垃圾回收系統Perl 跟蹤對象的鏈接數目當某對象的最後一個應用釋放到內存池時該對象就自動銷毀因此一般不需要定義類的析構函數
Perl 通過數組 @ISA 支持繼承
package Employee;
use Person;
use strict;
our @ISA = qw(Person); # inherits from Person

當子類繼承父類的時候繼承了父類的所有方法但子類也可以覆蓋父類的方法如加入 Employee 想覆蓋父類的 getFirstName

  復制代碼 代碼如下:

  #!/usr/bin/perl
package Employee;
use Person;
use strict;
our @ISA = qw(Person); # inherits from Person
# Override helper function
sub getFirstName {
my( $self ) = @_;
# This is child class function
print This is child class helper function\n;
return $self>{_firstName};
}
;



調用直接使用 $firstName = $object>getFirstName(); 如果要調用父類的 getFirstName則可以使用 $object>Person::getFirstName();
在 Python 中創建一個類的基本語法為 :
class className(bases):
classBody

參數 base 可以是一個單繼承或者多繼承的父類object 是所有類的父類位於類繼承結構的最上層類的構造函數為 __init__()其中構造函數中 self 會作為第一個默認的參數而類的析構函數則是 __del__()訪問類的方法和屬性可以直接使用 訪問符
Python 不支持純虛函數或抽象方法並且聲明和定義沒有本質區別一般或者 Python 類的屬性可以通過 __dict__ 或者 dict()訪問常見屬性有 __name__ __doc____base____dict__Python 中創建一個類的實例不需要關鍵之 new直接使用類名 () 即可如 c=myclass()
Python 不僅僅支持單繼承和多繼承同時還支持方法的覆蓋

  復制代碼 代碼如下:

  class P(object):
def foo(self):
print Hi I am Pfoo()
>>> p = P()
>>> pfoo()
Hi I am Pfoo()



現在創建 C 類 繼承於 P

  復制代碼 代碼如下:

  class C(P):
def foo(self):
print Hi I am Cfoo()
>>> c = C()
>>> cfoo()
Hi I am Cfoo()



當從一個帶構造器 __init()_ 的類派生如果在子類中覆蓋了 __init__()當子類被實例化時基類的 __init__() 方法不會被自動調用如果必須調用基類的構造方法可以使用父類名 __init__(self) 方法或者 super( 子類名self)__init__()

  復制代碼 代碼如下:

  def __init__(self):
super(C self)__init__()
print calling Cs constructor



Python 類和實例支持一些內建函數
Issubclass(subsup)判斷一個類是另一個類的子類或子孫類
isinstance(objobj)判定一個對象是否是另一個給定類的實例

Perl 與 Python 的正則表達式
正則表達式是 perl 比較突出的一大特色perl 中正則表達式有三種形式
匹配m/<regexp>/ (還可以簡寫為 /<regexp>;/ 略去 m) 替換s/<pattern>/<replacement>/ 為了語法的簡化用 /<pattern>/<replacement>/ 表示略去 s
轉換tr/<charClass>/<substituteClass>/ 這種形式包含一系列的字符— /<charClass> —同時把它們替換為 <substituteClass>
Perl 常用匹配模式
語法 說明 示例 匹配除換行符以外的所有字符 bc 匹配 bac x? 匹配 次或一次 x 字符串 b?c 匹配 c 或者 bc x* 匹配 次或多次 x 字符串但匹配可能的最少次數 b*c 匹配 c 或者 bbc x+ 匹配 次或多次 x 字符串但匹配可能的最少次數 b+c 匹配 bc 或者 bbc * 匹配 次或一次的任何字符 b*c 匹配 bgdc 等 + 匹配 次或多次的任何字符 b+c 匹配 bgc 等 {m} 匹配剛好是 m 個 的指定字符串 b{}c 匹配 bbbbbc {mn} 匹配在 m 個 以上 n 個 以下 的指定字符串 b{} 匹配 b 或者 bb {m} 匹配 m 個 以上 的指定字符串 b{} 匹配 bb 或者 bbb 等 [] 匹配符合 [] 內的字符 b[d]c 匹配 bdc [^] 匹配不符合 [] 內的字符 b[^d]c 匹配 bAc [] 匹配所有數字字符 b[]c 匹配 bc [az] 匹配所有小寫字母字符 b[az]c 匹配 bac ^ 匹配字符開頭的字符 ^perl 匹配以 perl 開頭的字符 $ 匹配字符結尾的字符 perl$ 匹配以 perl 結尾的字符 \d 匹配一個數字的字符和 [] 語法一樣 b\dc 匹配 bc \D 非數字其他同 \d b\Dc 匹配 bAc \w 英文字母或數字的字符串和 [azAZ] 語法一樣 b\wc 匹配 bc 等 \W 非英文字母或數字的字符串和 [^azAZ] 語法一樣 b\Wc 匹配 b c \s 空格和 [\n\t\r\f] 語法一樣 b\sc 匹配 b c \S 非空格和 [^\n\t\r\f] 語法一樣 b\Sc 匹配 bac 等 \b 匹配以英文字母 數字為邊界的字符串 \bbc\b 匹配 bc 但不匹配 bca \B 匹配不以英文字母 數值為邊界的字符串 sa\B 將匹配 sand 和 Sally 等字符串而不能匹配 Melissa a|b|c 匹配符合 a 字符 或是 b 字符 或是 c 字符 的字符串
abc 匹配含有 abc 的字符串 匹配 a 或者 b 或者 c 等 (pattern) () 這個符號會記住所找尋到的字符串是一個很實用的語法第一個 () 內所找到的字符串變成 $ 這個變量或是 \ 變量第二個 () 內所找到的字符串變成 $ 這個變量或是 \ 變量以此類推下去 b(\d)c 表示匹配的任何數字將存放與 $ 變量中

  Python 語言本身不支持正則表達式依賴 re 模塊(python 版本被引入)支持正則表達式有搜索和匹配兩種方法完成匹配模式re 模塊常用的函數和方法有 compliematchsearchfind 與 findall 等在利用 re 進行匹配之前模式必須被編譯成 regex 對象

   Python 常用匹配模式
語法 說明 示例 匹配除換行符 \n 以外的任意字符 bc 匹配 bacbdc * 匹配前一個字符 次或多次 b*c 匹配 c或者 bbbc + 匹配前一個字符 次或多次 b+c 匹配 bc 或者 bbbc ? 匹配前一個字符 次 b?c 匹配 c 或者 bc {m} 匹配前一個字符 m 次 b{}c 匹配 bbc {mn} 匹配前一個字符 m 至 n 次 b{}c 匹配 bbc 或者 bbbbc [abc] 匹配 [] 內的任意字符 [bc] 匹配 b 或者 c \d 匹配數字 [] b\dc 匹配 bc 等 \D 匹配非數字等價於 [^\d] b\Dc 匹配 bAc \s 匹配空白字符 b\sc 匹配 b c \S 匹配非空白字符 [\^s] b\Sc 匹配 bac \w 匹配 [AZaz_] b\wc 匹配 bAc 等 \W 等價於 [^\w] b\Wc 匹配 b c \ 轉義字符 b\\c 匹配 b\c ^ 匹配字符串開頭 ^bc 匹配句首的 bc $ 匹配字符串末尾 bc$ 匹配以 bc 結尾的字符串 \A 僅匹配字符串開頭 \Abc 匹配字符串開頭的 bc \Z 僅僅匹配字符串末尾 bc\Z 匹配字符串末尾的 bc | 匹配左右表達式任意一個 b|c 匹配 b 或者 c
Perl 與 Python 中的線程
線程是一個單一的執行流程它是所有程序執行過程中最小的控制單位即能被 CPU 所調度的最小任務單元在 Perl 中一個線程的生命周期包括創建運行與退出這三個階段線程的運行過程與普通函數的執行類似但新建線程的執行與當前線程的執行是並行的
在 Perl 中創建線程有兩種方法

清單 使用 threads 包的 create() 方法

  復制代碼 代碼如下:

  use threads;
sub say_hello
{
printf(Hello thread! @_\n);
return( rand() );
}
my $t = threads>create( \&say_hello param param );


清單 使用 async{} 塊創建線程

  復制代碼 代碼如下:

  #!/usr/bin/perl
use threads;
my $t = async{
printf(Hello thread!\n);
};


對於線程的執行控制有兩種方式一種是 join()一種是 detach()所謂 join() 就是在主線程中等待子線程的執行返回值然後再繼續執行後續代碼而在調用線程的 join() 方法之前子線程與主線程的執行是分開的而 detach() 則是告訴解釋器主線程不關心子線程的執行結果所以該子線程在完成任務之後就是自動退出同時釋放自己所占有的資源而不用主線程再操心
Perl 默認任何數據結構都不是共享的任何新創建的線程都有當前數據的私有拷貝如果要共享數據必須使用 threads::shard 進行顯示聲明

  復制代碼 代碼如下:

  my $var :shared = ; # use :share tag to define
my @array :shared = (); # use :share tag to define
my %hash = ();
share(%hash); # use share() funtion to define



同時 Perl 線程還支持鎖機制可以使用 lock 方法實現線程間共享數據的鎖機制Perl 中的 Thread::Semaphore 包為線程提供了信號量的支持Thread::Queue 包為線程提供了線程安全的隊列支持更多使用讀者可以自行查閱相關文檔
Python 提供了幾個用於多線程編程的模塊包括 thread threading 和 Queue 等thread 和 threading 模塊允許程序員創建和管理線程thread 模塊提供了基本的線程和鎖的支持而 threading 提供了更高級別功能更強的線程管理的功能Queue 模塊允許用戶創建一個可以用於多個線程之間共享數據的隊列數據結構
Python 的線程創建也有兩種方式一是利用 thread 模塊的 start_new_thread() 函數來產生新線程

  復制代碼 代碼如下:

  import time
import thread
def timer(no interval):
cnt =
while cnt<:
print Thread:(%d) Time:%s/n%(no timectime())
timesleep(interval)
cnt+=
threadexit_thread()
def test(): #Use threadstart_new_thread() to create new threads
threadstart_new_thread(timer ())
threadstart_new_thread(timer ())

if __name__==__main__:
test()



另一種是創建 threadingThread 的子類來包裝一個線程對象

  復制代碼 代碼如下:

  class timer(threadingThread): # derived from the class threadingThread
def __init__(self num interval):
threadingThread__init__(self)
selfthread_num = num
selfinterval = interval
selfthread_stop = False
def run(self): #Overwrite run() method put what you want the thread do here
while not selfthread_stop:
print Thread Object(%d) Time:%s/n %(selfthread_num timectime())
timesleep(selfinterval)
def stop(self):
selfthread_stop = True



Python 線程中也提供同步機制可以利用 thrading 模塊的 threadingRLock 和 hreadingCondition 可以分別實現鎖機制和條件變量
其中 acquire() 和 release() 方法分別獲取和釋放鎖

  復制代碼 代碼如下:

  def run(self):
global x
lockacquire()
for i in range():
x = x +
timesleep()
print x
lockrelease()


更多關於線程的內容讀者可查閱相關文檔
總結
本文從 Perl 和 Python 的起源基本數據類型控制結構函數包與模塊面向對象正則表達式以及線程等方面進行了比較從而給需要同時掌握這兩種腳本語言的開發人員一定參考以便更好的理解與應用

  參考資料 學習


在 developerWorks Linux 專區尋找為 Linux 開發人員(包括 Linux 新手入門)准備的更多參考資料查閱我們 最受歡迎的文章和教程


在 developerWorks 上查閱所有 Linux 技巧和 Linux 教程


隨時關注 developerWorks 技術活動和 網絡廣播


參考 Tutorial Perl官方文檔關注更多 Perl 動態


參考 Perl Document了解 Perl 基本語法


參考 Tutorial Python查看 Python 的官方文檔
From:http://tw.wingwit.com/Article/program/yxkf/201401/30234.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.