簡短的perl程式能夠實現大功能。
perl是如何做到的呢?
1. 預設變數
如果沒有向函式提供引數值,則預設引數為$_;
如果沒有變數用於接收乙個表示式的值,則預設接收變數為$_。
perl語言每條語句可像管道那樣執行,通過預設變數$_串接起來。
2. 特殊語法
利用一些正常情況下沒有含義的語法,如while(<>){}.
如果按照正常的語法,這個定法的意義是:讀取一行文字,然後丟棄。
由於正常情況下沒有人會這麼用,perl語言將這一語法利用起來了。在實際中寫起來非常方便。
3. 變數值不用給定初值,不用提前宣告
perl會自動為變數選擇合適的初值,如果沒有給定的話。
對於數值,初值為0;對於字串,初值為「「,也就是空字串。
4. 對於一些常用語法的簡潔寫法
如通過qw定義乙個字串list,可避免寫引號。
簡短的好處?
簡短,再加上perl與shell結合非常好,可以在命令列上直接寫出簡短又功能強大的**。
乙個常用用法:
find . |perl -e 'while(<>)'
處理標準輸入的每一行文字。'...'表示每行的處理**。
通過動態宣告乙個函式,省略while,只提供每行的處理**,可以進一步節省位元組。
process_each_line.pl
#!/usr/bin/perlmy $cmd=$ar**[0];
my $func = eval "sub}";
die "unable to compile '$cmd', aborting...\n" if not defined $func;
$func->();
命令列呼叫
find . |./process_each_line.pl 'print if /pl$/'
列印出當前目錄下所有以pl結尾的檔名。
process_each_line.pl 會生成乙個函式 sub}(第3行),然後再呼叫這個函式(最後一行)。
可繼續擴充這個檔案,加入一些常用函式,供在命令列上直接呼叫。
簡短的說明
本人愛丁堡小弱弱,目前是ecs的學生 有想要交流的可以私信我 我打算把大一第一學期學的haskell相關知識,分享一下,權當複習了 本學期從兩個方面學習了haskell,一節課是cl computation and logic,另一節課是fp functional programming 所以我也打...
perl 子程式的使用
在perl中可以自己建立子程式 subroutine 關鍵字sub,子程式名以及用花括號封閉起來的 塊。sub marine 子程式名與標量的命名空間是不同的兩個部分。子程式的返回值 最後一次運算的表示式即是預設的返回值。也可以用return來顯式的返回,這樣之後的語句不會執行。在標量上下文返回的會...
自動郵件程式 perl
usr bin perl pod author laomeng e mail 18682093512 163.com 運維工作自動化 由於這種工作是一種重複性的操作,在人工產生的報表過程有可能出現 資料的錯或格式不正確通過 難免不認真 所以為減少工作的重複性和避 免生產過程中資料錯誤和格式錯誤而開發...