簡短的perl程式

來源:互聯網
上載者:User

標籤:


  簡短的perl程式能夠實現大功能。
 
  perl是如何做到的呢?
  1. 預設變數
     如果沒有向函數提供參數值,則預設參數為$_;
     如果沒有變數用於接收一個運算式的值,則預設接收變數為$_。
     perl語言每條語句可像管道那樣運行,通過預設變數$_串接起來。
  2. 特殊文法
     利用一些正常情況下沒有含義的文法,如while(<>){}.
     如果按照正常的文法,這個定法的意義是:讀取一行文本,然後丟棄。
     由於正常情況下沒有人會這麼用,perl語言將這一文法利用起來了。在實際中寫起來非常方便。
  3. 變數值不用給定初值,不用提前聲明
     perl會自動為變數選擇合適的初值,如果沒有給定的話。
     對於數值,初值為0;對於字串,初值為““,也就是Null 字元串。
  4. 對於一些常用文法的簡潔寫法
     如通過qw定義一個字串list,可避免寫引號。
     
  簡短的好處?
  簡短,再加上perl與shell結合非常好,可以在命令列上直接寫出簡短又功能強大的代碼。
  一個常用用法:

find . |perl -e ‘while(<>){...}‘

   處理標準輸入的每一行文本。‘...‘表示每行的處理代碼。

  通過動態聲明一個函數,省略while,只提供每行的處理代碼,可以進一步節省位元組。
  process_each_line.pl

  #!/usr/bin/perl  my $cmd=$ARGV[0];  my $func = eval "sub{while(<STDIN>){chomp;$cmd;}}";  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{while (<STDIN>){chomp; print if /pl$/;}}(第3行),然後再調用這個函數(最後一行)。
  可繼續擴充這個檔案,加入一些常用函數,供在命令列上直接調用。


簡短的perl程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.