Perl 子例程呼叫by引用

2021-06-18 21:16:26 字數 1130 閱讀 9526

#第一種情況,傳匿名子例程引用

my $rs=\&greet;

#$rs=\&greet();#wrong

#$rs->('joan','kim');#當呼叫的已經是匿名子例程引用的時候。這行放在這裡報錯

my $hidrs=sub;#here is only 1 line not 4 lines

#&$hidrs('tim');

#my $hidrs這塊不能放在sub greet塊的後面,不然會報錯。

$rs->('joan','kim');#當呼叫的已經是匿名子例程引用的時候。這行放在這裡工作正常

sub greet#here is 5 lines

$rs->('joan','kim');#當呼叫的已經是匿名子例程引用的時候。這行放在這裡工作正常

#另一種情況,傳有名子例程引用

my $rs1 = \&test1;

$rs1 -> ("batman") -> ("robin");#當呼叫的是有名子例程引用的時候。這行放在這裡工作正常

#sub test1()#work

subtest1

my $arg = shift;

print $arg;

return \&test2;#當呼叫的是有名子例程引用的時候

$rs1 -> ("batman") -> ("robin");#當呼叫的是有名子例程引用的時候。這行放在這裡工作正常

#sub test2()#work

sub test2

{my $arg = shift;

print " and $arg say \"hello world\" too.\n";

$rs1 -> ("batman") -> ("robin");#當呼叫的是有名子例程引用的時候。這行放在這裡工作正常

perl子例程引數傳遞方式初探

perl裡,子例程採用可變長引數列表,因此引數的個數不再限制,體現出動態語言的優點。由於傳遞的是引用,所以可以在sub裡改變它的值。samle01.pl usr bin perl sub sub routine my par1 abcde my par2 2 print main par1 par1...

perl陣列硬引用 perl中的引用

為什麼使用引用?在perl4中,hash表中的value欄位只能是scalar,而不能是list,這對於有些情況是很不方便的,比如有下面的資料 chicago,usa frankfurt,germany berlin,germany washington,usa helsinki,finland n...

Perl 函式引用

函式的引用 ref func func的定義在其他位置 不要 當 func 時為執行函式,返回值再引用。當 func 時為執行函式,返回值再引用。oracle jhoa 3 cat 3.pl sub generate greeting 引用 rs generate greeting print rs...