本文教你Perl(2)
發(fā)表時間:2024-02-05 來源:明輝站整理相關軟件相關文章人氣:
[摘要]哦,但那是真的嗎? 問得好,我希望在你使用Perl大約一年之后,就能告訴我答案。一樣東西的描述就像一個容器……,我仍舊在試圖尋找一個適合Perl的足夠大的容器(要是帶有能鎖的蓋子就更好了)。 那Perl不適用的方面呢? 我不會用Perl去寫一個GUI文字處理程序,一個圖形游戲,或者一個圖形瀏...
哦,但那是真的嗎?
問得好,我希望在你使用Perl大約一年之后,就能告訴我答案。一樣東西的描述就像一個容器……,我仍舊在試圖尋找一個適合Perl的足夠大的容器(要是帶有能鎖的蓋子就更好了)。
那Perl不適用的方面呢?
我不會用Perl去寫一個GUI文字處理程序,一個圖形游戲,或者一個圖形瀏覽器。Perl能通過與許多其他語言的接口真正的交互,所以你可以實現(xiàn)剛才所說的全部程序。但在我看來,在其它編程語言里有許多更有效的方法去做那些事情!皩σ粋拿著錘子的人來說,所有的問題看上去都像是釘子”——程序員們小心了。
值得注意的是,Perl本身并不是用Perl寫成的,也不是Linalx的內(nèi)核。那些底層的事務用C/C++來處理會更好的!坝米钸m合的工具去做最適合的工作”應成為每個程序員的座佑銘。
在拉開跳傘索之前的最后一次告誡。
如果你對Perl有一點了解,或者看過《Aint The Way I Learned It》系列內(nèi)容的話,一定記得Perl的口號:“做事總有不止一種辦法(There's More Than One Way To Do It)”。這常被縮寫為TMTOMDI,并稱為“tim-today”,是Perl的核心觀點之一。當然,任何對明顯的錯誤的訂正都非常歡迎。
那些看過我早些時間寫的關于Shell腳本的叢書的人也許記得,一個腳本開始都有被稱作hash-bang或shebang的行:
#!/bin/ bash
這行告訴外殼(shell)派生一個subshell(子shell),隨后的代碼將被這個特定的subshell程序解釋執(zhí)行。Perl腳本也一樣,第一行必須是:
#!/usr/bin/Perl
或者任何一個正確的Perl解釋器的路徑。
注意到Hash-bang的必要條件:
1) 它必須是在腳本中的第一行。
2) #號必須是本行的第一個字母,并且在#號和!號之間不能有任何字母或符號。
3) 必須使用絕對的路徑,而不是只有可執(zhí)行程序的名稱。
下面,讓我們試著寫出我們的第一個 Perl腳本:
#!/ usr/bin/Perl
# "goodbye" - a modern, high-angst replacement for "Hello World"
print "Goodbye, cruel world!
";
unlink $0;
嗯,至少在離開以前說了“再見”;禮貌夫人都會為此驕傲的。我們在這個腳本里做了什么呢?有幾件事情是相當明顯的:第一,“hash-bang”,第二,一行告訴我們腳本要做什么的說明—從shell腳本發(fā)展出來的另一個東東,并且這是個不錯的想法(在代碼中并沒有過多的解釋。。第三,我們用“print”函數(shù)打印出所要的信息。注意,在一串字符末尾的“ ”:Perl不會自動為你提供一個換行,所以你必須自己決定要還是不要。還要注意,在每一行代碼末尾的分號:就像C語言,Perl也有同樣的要求,不幸的是這常被編程者所忘記。實際上,由于有著相對易懂的信息,Perl的錯誤檢查十分容易,作為代碼語句的分隔標志,分號常被認為是下一行的前導符。如果你注意到這個問題,并不麻煩,最好記住使用分號。
最后一行的意思是刪除 “goodbye cruel world”文件,符號“$0”僅僅是被運行堵塞的腳本的名字的引用,“unlink”做了和“rm”一樣的事。注意,“$0”比“goodbye”甚至是“/goodbye”有用的多,不管文件是什么名字,“$0”將返回這個文件名。