只有一行的Perl程式第1/3頁

來源:互聯網
上載者:User

1 line perl
今天來說說perl,只有一行的perl程式。
各種程式設計語言中perl是以變態的古靈精怪而聞名的,比如我,就經常寫出自己都看不懂的perl程式來。
比如這篇文檔中的程式,雖然短小,估計一個星期之後我看這就要頭暈了。但這絲毫不影響perl作為 一個功能強大的系統管理工具和系統控制語言的存在和推廣,而且靈活性恰恰是它最大的優勢,你可以
這樣寫,也可以那樣寫,“或者,絕招同途異路。”
1. hello world!
===========================================================
還是從最經典的 hello,world! 開始......
##
# perl -e 'print "hello,world!\n"'
hello,world!
##
完全不出意料,他沒有任何歧異的終於我們願意的輸出了"hello,world!",自然得就像我麼用echo或
printf()一樣。
這個程式按照傳統形態展開的話是這樣:
==
#!/usr/bin/perl
print "hello,world!\n";
==
我們在命令列上使用了perl 的-e參數,這將使perl把-e之後直接跟著的字串當作perl的程式自動內建
展開執行,免去了我們用vi或cat重寫檔案之苦。
-e參數的功能,就是自動把之後的字串作為程式主題執行,再之後的參數將作為perl指令碼的命令列
參數($ARGC 和 @ARGV)傳遞給程式語句。
2. 我要cat。
===========================================================
hello,world!看似完全沒有作用,其實我們可以豐富它,用它來完成任何工作--只要你的想象力夠豐富。
perl世界裡很有名的一個項目就是ppt( pOWER pERL tOOLS),用純perl重新實現了所有unix常用命令。
我們來看一個最簡單的cat。
##
# perl -pe 1 /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.3 vi
##
就如同cat一樣,這行命令原樣的輸出了/etc/hosts檔案。我們來看看它實際做了些什麼:
==
#!/usr/bin/perl
for(@ARGV){
open($F,$_);
while(<>){
&調用執行-e參數指定的指令
&本例中為1
return 1;
}
}
==
這裡解釋一下涉及到的第二個perl命令列參數-p,-p的過程實際就是自動為我們提供了一個如上面原始碼
中所見的雙層迴圈,第一層是依次讀取命令列上指定的檔案名稱,作為@ARGV ,開啟檔案並進行處理;
第二層迴圈則從open($ARGV[*])接收檔案控制代碼,並執行一個perl的<>操作,一次讀取檔案的每一行,
並進行處理,處理的過程就是我們使用-e指定的程式語句。 如果沒有指定程式語句,那麼預設的情況
將是讀取並回顯每一行。
所以這個程式的流程如下:
1, 迴圈,依次讀取@ARGV 中指定的若干檔案;
2, 開啟當前檔案;
3, 迴圈,依次使用<>操作符讀取每一行,並儲存在臨時變數$_ ;
4, 調用-e的程式語句進行處理; 在本例中,-e只有1一個參數,在perl中代表 retuen 1,直接返回真值
不作處理。
再寫兩條有用的命令:
# perl -pe 'exit if $. > 10' FILENAME
這條相當於unix命令head,列印指定檔案的前10行 -- 你可以把10改成你想要的任何數字;
# perl -e '@lines = <>; print @lines[$#lines-10 .. $#lines]' FILENAME
這條相當於unix命令tail,列印指定檔案的最後10行 -- 同樣你也可以修改成你想要的。
3. kick sed。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.