子程序

Perl可以讓我們創(chuàng)建子程序,也就是我們自己定義的函數。子程序用&開頭。

定義子程序

用關鍵字sub定義,可以定義在任意位置,不用事先聲明。
如果有重名子程序,那么后定義的會覆蓋之前定義的。
調用子程序時,只需要用 $子程序名 進行調用。

返回值

子程序的最后一次運算結果就被自動當作子程序的返回值。若子程序最后一步執(zhí)行的不是計算操作,那么會根據情況返回1或0。

參數

要傳遞參數到Perl子程序里,只要在調用后面加上被括號圈引的列表就行了,Perl會自動把參數列表化名為數組變量@_ 。 如果用到超出@_數組邊界的參數,只會得到undef

$n = &max(10,15);

sub max
{
  if($_[0] > $_[1]){
          $_[0];
  }else {
          $_[1];
  }
}

子程序中的私有變量。

默認情況下,Perl內所有變量都是全局變量,在程序的任何地方的都可以訪問它們。但我們借助my操作符來創(chuàng)建私有變量,稱為詞法變量。

sub max
{
  my($m,$n);
  ($m,$n) = @_;
  if($m > $n) { $m } else { $n }
}

Perl也支持變長參數列表和空參數列表

use strict編譯指令

將use strict指令放在程序開頭,將會讓Perl多一些約束

return操作符

和其他語言一樣

非標量返回值

子程序還可以返回列表值
例子:

sub list_from_fred_to_barney{
  if($fred < $barney){
      $fred..$barney;
  } else {
          reverse $barney..$fred;
    }
}

持久性私有變量

在子程序中用my操作符創(chuàng)建的私有變量,在每次調用這個子程序的時候都會被重新定義。而使用state操作符來聲明變量,就可以在多次調用期間保留變量之前的值,并且變量的作用域局限在子程序內部。

例子:

use 5.010

sub marine{
  state $n = 0;
  $n += 1;
  print "hello"#這是執(zhí)行的最后一步,返回1
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 定義子程序 Perl中有許多內置的系統(tǒng)函數,如chomp、sort、print等,每一個這樣的函數都可以實現各種不...
    櫻雨樓閱讀 690評論 0 0
  • Perl 子程序(函數) Perl 子程序也就是用戶定義的函數。 Perl 子程序即執(zhí)行一個特殊任務的一段分離的代...
    木易林1閱讀 360評論 0 0
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,352評論 0 10
  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,725評論 0 5
  • 有時候不知道真相的人,不了解本質的人,是快樂的;而能夠假裝不知道真相,不了解本質的人,那是幸福的。 那個炎...
    半度空間閱讀 206評論 0 0

友情鏈接更多精彩內容