2008年3月30日 星期日

Perl的6大應用面向

轉自 ITHOME
文/黃彥棻 (記者) 2008-01-25


Perl不只用在IT系統,連生物基因分析、會計統計分析、IC設計所使用的工具和IT設備管理語言,都支援Perl或用Perl撰寫。

Perl的6大應用面向

● IT設備的管理軟體
● 生物基因分析
● IC設計工具支援Perl
● 會計統計資料分析
● 資料庫人員(Oracle、SAP等)
● 駭客做病毒或程式破解碼


資料來源:奇科電腦,iThome整理,2008年1月
許多人對程式語言的了解,大抵不脫C、C++、Java、VB或.NET等常見的程式語言。這些程式語言的用途,也多數用於相關IT系統開發與應用上。不過,有一種程式語言號稱學習容易上手,應用範圍除了可用來寫IT系統的指令外,更常用於生物基因分析、大量資料統計分析等。這個程式語言就是Perl。目前,臺灣只有奇科電腦開設Perl語言相關課程。

奇科電腦總經理賴玉斌曾經在美國思科(Cisco)公司工作10年之久,他說:「Perl語言能力是在美國工作必備的能力之一。」他強調,在許多外商IT公司工作,精通並善用Perl語言,可以做到員工生產力的提升,舉例而言,很多IT設備都會販售專屬的管理軟體(Management Console),但不見得每間公司都有足夠的預算,購買售價高達數十萬或上百萬元的管理軟體。賴玉斌說,一個比較快的替代方案就是,用Perl寫一個指令,讓人員管理這些設備。

在美國Amazon、Yahoo都大量使用Perl,但反觀臺灣,對於Perl的了解非常淺薄,不僅企業界不了解Perl好用之處,連學習的人也不多。「不了解Perl不代表沒有需求,」賴玉斌說,所以奇科才開設Perl相關課程,藉此推廣Perl語言。Perl就是Practical Extraction Report Language,1981年由Larry Wall教授開始設計、發展。相較於其他程式語言而言,賴玉斌表示,Perl這個腳本語言(Script Language),是一個強調務實、直譯式的開發語言,程式語言怎麼寫、就怎麼執行,其特色在於:針對大量文字、二進位數字等資料,能從中取出資訊並做成報表。

因為Perl強調務實,容易使用、有效率而且完整,賴玉斌說,對於學程式有恐懼、非科班出身的人,Perl是非常好的入門學習程式開發的語言。Perl的名言就是:「只要2周就可以達到60%撰寫功力,但從60%~80%功力,卻需要5年的時間。」但是,「這60%的功力對於絕大多數的應用而言,都已經相當足夠了。」他說。全世界第1支DVD破解程式只有7行,就是用Perl撰寫的程式語言。賴玉斌說,「有很多駭客都會學Perl語言,主要目的是寫蠕蟲(Worm)程式。」

臺灣企業IT部門或者IT工作者對於Perl的了解並不深,不過,有其他行業對於Perl這種能夠針對大量文字、數字作分析能力,有急迫性的需要。最好的例子就是生物的基因分析。賴玉斌表示,生物學的基因分析,需要跟全世界的基因資料庫做大量資料比對,若要從C語言一行一行撰寫比對功能,甚至還要沒有錯誤,是一項非常艱鉅的挑戰。

不過,生物學界本來就有一個用Perl語言撰寫的BioPerl模組,就是用來解決大量資料比對時的效率問題。他說,目前上Perl課程的人,有很多都是生物研究、基因研究或者醫療衛生相關行業的研究學者或學生,重點在於學會寫程式作基因比對,「程式寫得好,基因比對就不需要用人比對,」賴玉斌說。

除了生物分析之外,有一些IC設計的工具也開始支援Perl,用來作數值分析和比對,因此,有一些IC設計研發人員也開始學Perl。而會計系需要做大量的統計資料和數字分析,賴玉斌說,很多終端分析需要懂Perl來做資料分析,如果是一些客製化的會計軟體,也需要懂Perl做客製化。許多IT設備的軟體也都是由Perl撰寫的,賴玉斌說,即使對設備、網路拓樸有了解,還是得花時間設定完成,但若懂得用寫程式語言來跑程式,有助於生產效能的提升、成本的降低。

賴玉斌表示,DVD破解檔是Perl撰寫的,連全球受害的紅色警戒(Code Red)病毒,也是用Perl撰寫。更有甚者,「資料庫人員都應該要懂Perl,」賴玉斌指出,甲骨文資料庫或SAP,甚至有自己專屬的Perl語言,是真正Perl的小集合。即便是許多用PHP的網站開發,還得處理許多網頁文字和數據分析,賴玉斌表示,很多C語言在做正規表示法時,都會直接納入Perl的函示庫(Library)來處理一些文字和數據,「這儼然成為一種趨勢,」他說。

根據TIOBE開發語言排行榜日前公布2008年初統計結果中,Java和C#最受歡迎,受到Python(第6名)流行指數急遽攀升影響,Perl(第7名)排名遭到排擠。賴玉斌指出,Python也是一個高階、跨平臺、易學習的動態語言,但在文字和數據處理能力上,Python仍難望Perl項背。文⊙黃彥棻

2008年3月25日 星期二

in_array


$string = ‘fin_helm’;
$array = array(’full_plate’,'manteau’,'boots’,'two_handed_sword’,'fin_helm’);
if(in_array($string, $array))
{
print “$string is in the array”;
}
?>


#!/usr/bin/perl
my $string = ‘fin_helm’;
my @array = qw/full_plate manteau boots two_handed_sword fin_helm/;
if(grep $_ eq $string, @array)
{
print “$string is in the array”;
}


grep语法
grep BLOCK LIST
grep EXPR, LIST
ex:
Reference from http://mach.debagua.com/archives/2007/0622_000544.html



$shopid_list = "950272 1618616 1626010 1620041 1613047 1843905 2555854 1612225 1615202 1329343 2439204 300626 1623950 2630407 2685660 1611501 301721 1864877 1672871 302296 904914 1685735 2815106 974037 1614867 2684563 1866639 1632518 1882639 1639995 1706732 1638243 1774685 2256527 1649382 1621969 941962 974113 2768569 2561992 302559 2612701 1709907 1713725 940505 1993346 301860 2177558 1906324 1504229 1637618 1638367 2128013 1867004 911219 946878 1592792 2506425 1619153 1653338 1639030 1643759 2692553 1693809";

$tmp = "950272";

if(( $shopid_list =~ m/\b$tmp\b/g)){

}

2008年3月20日 星期四

Epoch Converter (Timestamp Data)

http://www.epochconverter.com/epoch/

2008年3月13日 星期四

SHA Encryption



$phrase = "Hello World";

$sha1a = base64_encode(sha1($phrase));
$sha1b = base64_encode(bin2hex(mhash(MHASH_SHA1,$phrase)));
$sha256b= base64_encode(bin2hex(mhash(MHASH_SHA256,$phrase)));

echo ("SHA1..:" . $sha1a . "\n");
echo ("SHA1..:" . $sha1b . "\n");
echo ("SHA256:" . $sha256b . "\n");
?>

關於我自己

Aspire freedom , Hope to do Soming make self complete ~