Perl 子程式
什麼是子程式?
子程式與其他程式語言中的函式類似。我們已經使用了一些內建函式,如 print
、chomp
、chop
等。我們可以在 Perl 中編寫自己的子程式。這些子程式可以寫在程式的任何地方,但最好將子程式放在程式碼的開頭或結尾。
子程式示例
sub subroutine_name
{
Statements…; # this is how typical subroutines look like.
}
我們知道如何編寫子程式,我們如何訪問它?
我們需要使用字首為 &
的子程式名來訪問或呼叫子程式。
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
傳遞 Perl 引數和輸入引數
編寫子程式或 Perl 函式主要是編寫那些可重複使用程式碼。大多數可重用程式碼都需要將引數傳遞給子程式。在這裡,我們將學習如何將引數傳遞給子程式。
sub display
{
my $var=@_; # @_ is a special variable which stores the list of arguments passed.
print "$var is the value passed";
}
display(2,3,4); #this is how we need to pass the arguments.
輸出:
3 is the value passed
@_
是一個特殊的陣列變數,它儲存傳遞給子程式的引數。
Perl Shift
我們也可以使用’shift’關鍵字,它一次將一個引數移動到變數或 $_[0],$_[1]…
,這是 @_
陣列的單獨元素。
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
輸出:
hello is passed
子程式通常用於物件導向的程式設計,也可用於可能有更多可重用程式碼的地方。
子程式的主要功能是執行一些任務並返回可重用程式碼的結果。
我們可以使用 return
關鍵字從子程式返回一個值。
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
輸出:
11
$result
將保有 $a
和 $b
的值。
我們還可以將雜湊陣列和陣列直接傳遞給子程式。
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
輸出:
1a2b
我們還可以返回雜湊陣列或陣列。
sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;
輸出:
Inside Sub-routine2b1aAfter Sub-routine call2b1a