由於公司需要,本人最近在學習perl這種指令碼語言,本文是我在學習perl的過程中總結出來的一些心得和筆記,希望能夠幫助也在學習perl的各位同僚。廢話不多說直接上乾貨!!!
—————————————————
————————— 乾貨分割線 ———————
———————————————————
pe r l中,使用者定義的函式稱為子例程.子例程可以在任何位置被呼叫,包括在其他子例程中呼叫.
建立函式:
sub 函式名else
sub x_greaterthan100
ps:最好把子函式寫在父函式後面,這樣在傳遞引數時便不會提示警告.
子例程能夠返回陣列和雜湊結構,也能返回標量.
exp:
#!/usr/bin/perl
use strict;
use warnings;
my @a = shift_to_upper();
for(my $i = 0; $i <= $#a; $i++)
sub shift_to_upper
return (@words);
}
子例程傳遞引數的寫法:subname(arg1,arg2,arg3);
subname arg1,arg2,arg3; #該子例程被定義後,才能使用該寫法
$subname(arg1,arg2,arg3);
在寫子函式時,有兩種寫法:
1. sub subroutine($$){},該方法要求在呼叫該方法時必須傳遞兩個引數;
2. sub subroutine(){},該方法對傳參個數沒有嚴格要求。
在子例程中,被傳遞的引數可以通過p e r l的特殊變數@ 來訪問。下面這個**段顯示了為函式傳遞引數(3個字串直接量)和輸出引數的情況:
#!/usr/bin/perl
use strict;
use warnings;
sub printargs
printargs('aaa','bbb','ccc ddd');
輸出:aaa,bbb,ccc ddd
exp:
use strict;
use warnings;
sub display_box_score
display_box_score(50,210);
ps:
1.當引數為1個時,輸出為:
因為at_bats沒有引數,所以報錯;
2.當引數個數》2時,不影響程式結果,只是後面的引數沒有接收到而已
3.@ _包含了傳遞給子例程的原始引數的別名。如果修改了@ _(或者修改了@ 的任何元素),就會修改引數列表中的元素變數。
傳遞陣列和hash結構
1.乙個引數時
@sorted_items = sort_numberically(@items);
sub sort_numberically @_);
ps:在該子例程中,@items通過@_進行引用
2.多個引數時
exp:
display_arrays(@first,@second);
sub display_arrays
return ($sum / @data);}
#返回陣列中間的數,若為偶數,則返回兩個數的平均值
sub median @_; #將原陣列重新排序
if(scalar (@data) % 2)else }
sub std_dev
return (sqrt($sq_dev_sum / @data - 1));
}宣告local變數:
exp:
sub myfunc{
local($foo) = 56;
用local宣告的變數和用my幾乎相同。差別是:宣告為區域性變數的那些變數,可以在它的作用域範圍內的**塊中看到,也可以在從該**塊中呼叫的任何子例程中看到。基本都用my生命而不用local.
perl 自定義函式
使用者函式 使用者函式又稱子程式 subroutine 在perl中用下面的結構來定義使用者函式 sub 子程式名 這裡的子程式名與變數的取名規則類似。以顯示歡迎詞的程式為例 sub say hello 使用者函式的定義可以位於程式的任何位置,比如說放在檔案的未尾。如果兩個子程式使用了相同的程式名,...
C語言 自定義函式
c語言 關於自定義函式 return type function name datetype arg datetype arg2 函式三要素 函式返回值 函式名 引數列表 例子呀 自定義函式的完整寫法 include 函式原型 int sum int,int 可以只寫型別,引數名稱可省略 int m...
自定義函式 Excel之自定義函式
在excel中,當系統函式不能滿足我們的需求時候,我們可以使用vba自定義函式,如抓取網頁資料,翻譯詞彙,手機號歸屬地查詢等。下面將介紹2個自定義函式,idymd函式 身份證年月日性別 通過身份證號,返回性別,出生年月日。語法 idymd id 引數 id,身份證號,預設身份證長度18位。vba 如...