1. Perl函數
經過 & 調用.
2. Perl參數
Perl自然支持可變數目個參數。
在函數內部,全部參數按順序放在數組 @_ 中。
在函數內部,$_[0] 表示函數的第一個參數。其他類推。
3. shift
shift 後跟一個數組,表示將數組的第一個值返回。數組也被改變,其第一個元素被彈出。
演示代碼一(求最大值): 算法
#!/usr/bin/perl -w 數組
use strict; 函數
# 調用函數max,取得一組數值的最大值,並輸出。
my $maxValue = &max(11,22,33);
print "maxValue=$maxValue\n"; 學習
sub max { foreach
# 採用遍歷算法。先將參數中的第一個值賦給$currentMaxValue。
# @_ 是默認的包含本函數全部參數 [如(11,22,33)]的數組。
# shift @_ 有兩個結果: 1. 將數組 @_ 中的第一個值作爲返回值(賦給了$currentMaxValue). 2. 將@_數組第一個值彈出[此後@_的值變爲(22,33)].
my $currentMaxValue = shift @_; perl
# 函數中使用shift時,@_能夠省略。上面代碼也能夠寫成這樣。
# my $currentMaxValue = shift; 遍歷
# 遍歷整個@_數組。
foreach ( @_ ) { co
# $_ 表示數組@_中當前被遍歷到的元素.
if ( $_ > $currentMaxValue ) { return
# 若是發現當前數組元素比$currentMaxValue大,那就將$currentMaxValue從新賦值爲當前元素。
$currentMaxValue = $_;
}
} 參數
# 函數返回值爲標量$currentMaxValue.
return $currentMaxValue;
}
演示代碼二(求和):
#!/usr/bin/perl -w
use strict;
# 求一組數的和並打印。
my $s1 = &sum1(11,22,33);
my $s2 = &sum2(22,33,44);
my $s3 = &sum3(11,22,33,44,55);
print "s1=$s1, s2=$s2, s3=$s3\n";
# 辦法1
sub sum1 {
# 將參數數組的前三個元素值相應地賦給($first, $second, $third)
(my $first, my $second, my $third) = @_;
# 返回其和值。缺點: 若是是求四個參數的和,依然只能給出前三個的和。
return $first + $second + $third;
}
# 辦法2
sub sum2 {
# $_[0] 表示參數數組@_的第一個元素。其他類推。
my $first = $_[0];
my $second = $_[1];
my $third = $_[2];
# 返回其和值。缺點: 同sum1. 只是經過這裏學習 $_[0] 這種用法。
return $first + $second + $third;
}
# 辦法3, 參數能夠任意多。都能求其和。 sub sum3 { my $s = shift @_; foreach ( @_ ) { $s = $s + $_; } # 同前面函數max。 return $s; }