Perl語言入門 08 自定義函式

2021-07-22 13:19:30 字數 2271 閱讀 7298

由於公司需要,本人最近在學習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 如...