Subroutine 子程序 Perl 第四章
子程序的定義是全局的,不需要事先聲明。若重復(fù)定義子程序,后面的覆蓋前面的。
?
sub marine {
$n +=1;
print " Hello ,sailor number $_ ! ";
}
?
調(diào)用:&marine;
返回值:最后一次的運(yùn)算結(jié)果會(huì)被當(dāng)作返回值。
變量:所有變量默認(rèn)為全局變量
參數(shù):@_為subroutine 的私有變量。若恰有全局變量@_ 則調(diào)用子程序時(shí)存起,子程序結(jié)束會(huì)自動(dòng)恢復(fù)。
? ? ? ? ?$_[0]? $_[1] $_[2]? ...存于數(shù)組變量@_
? ? ? ? ? ?sub max {
? ? ? ? ? ? ? if (@_ != 2)? { print? "? “};
? ? ? ? ? ? ? ? if ($_[0] > $_[1]) {
? ? ? ? ? ? ? ? ? ? print "? ";
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? }
? ? ? &max(13,29) ;
?
example2:
? ? ? $maxmun = &maxh(2,8,32,44,9);
? ? ?sub maxh {?
? ? ? ? my ($max_so_far) = shift @_ ;
? ? ? ?foreach (@_)? {
? ? ? ? ?if ($_ > $max_so_far)? { $max_so_far = $_ };
? ? ? ? }
? ? ? $max_so_far;
? }
?
私有變量: my
?sub max {
? my ($m,$n) = @_ ;? #子程序私有變量;和子程序外的世界互不相犯
? }
?
?
?
作用域受限于定義它的最內(nèi)層語(yǔ)句塊/文件 #語(yǔ)句塊為foreach等。
my 操作不會(huì)改變賦值時(shí)的上下文
?
my? ($num)? = @_? ;? # 列表上下文? 等同于? ($num) = @_
my? $num = @_ ; #標(biāo)量上下文? 等同于? $num = @_
my $fred,$baney? # 錯(cuò),沒有聲明$baney
?
return:立即停止執(zhí)行,并返回某值。
? ? ? ? sub which {
? ? ? ? ?foreach (? )? {? ? ? ? ?
? ? ? ? ?if? ( )? {
? ? ? ? ? ? ? ? ? ? ?return? $_;
? ? ? ? ? ? ? }
? ? ? ? ?}
? ? ? ?return -1 ;? #或省略return? ?指查無(wú)此值,沒有找到符合條件的元素
? ? }
?
省略&號(hào):
和內(nèi)嵌函數(shù)同名時(shí),不能省略&。? 比如自定義一個(gè)函數(shù)chomp() ,調(diào)用時(shí)必須使用&chomp
?
非標(biāo)量返回值:
sub? listx? {
if ($a < $b) {
? $a..$b
} else {
reverse $a..$b
}
@c = &listx(11,6)? ;#? 11,10,9,8,7,6
?
持久性私有變量:state? 多次調(diào)用子程序期間,保留該變量每次的值。適用于未定義的全局變量這種情況,my私有變量每次調(diào)用結(jié)束,就會(huì)拋棄存值。
?
轉(zhuǎn)載于:https://www.cnblogs.com/lelin/p/11206190.html
總結(jié)
以上是生活随笔為你收集整理的Subroutine 子程序 Perl 第四章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之编写登录接口
- 下一篇: 好玩游戏的物品清单