#第一种情况,传匿名子例程引用
my $rs=\&greet;
#$rs=\&greet();#wrong
#$rs->('Joan','Kim');#当调用的已经是匿名子例程引用的时候。这行放在这里报错
my $ele=shift (@_);
print "$ele say \"Hello World\".\n";
};#here is only 1 line not 4 lines
#&$hidrs('Tim');
#my $hidrs这块不能放在sub greet块的后面,不然会报错。
$rs->('Joan','Kim');#当调用的已经是匿名子例程引用的时候。这行放在这里工作正常
my $ele=shift;
print "$ele and ";
return &$hidrs;#当调用的已经是 匿名子例程引用的时候,要注意写法与下面的 区分开来
}#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");#当调用的是有名子例程引用的时候。这行放在这里工作正常