perl语言传递参数
传递标量
当我们传递的参数,标量的时候,适用于 标量读取参数
例子:
Average 函数传入3个参数,
Average 接收后可用@_[0] 获取位置参数
也可以直接遍历@_,当有多个标量时传递过来是以数组形式接受。
#!/usr/bin/perl
# 定义求平均值函数
sub Average{
# 获取所有传入的参数
$n = scalar(@_);
$sum = 0;
foreach $item (@_){
$sum += $item;
}
$average = $sum / $n;
print '传入的参数为 : ',"@_\n"; # 打印整个数组
print "第一个参数值为 : $_[0]\n"; # 打印第一个参数
print "传入参数的平均值为 : $average\n"; # 打印平均值
}
# 调用函数
Average(10, 20, 30);
#结果
传入的参数为 : 10 20 30
第一个参数值为 : 10
传入参数的平均值为 : 20
传递数组
传递一个数组
例:
#!/usr/bin/perl
# 定义函数
sub PrintList{
my @list = @_;
print "列表为 : @list\n";
}
@b = (1, 2, 3, 4);
# 列表参数
PrintList(@b);
#结果
列表为 : 10 1 2 3 4
传递多个数组
这里所利用的是引用的概念
引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。
#!/usr/bin/perl
# 定义函数
sub PrintList{
my ($list1,$lsit2) = @_;
foreach $key ( @$list1 ){
print "$key \n";
}
print "列表为 : @$list1\n";
print "列表为 : @$list2\n";
print ""
}
@b = (1, 2, 3, 4);
@a = ("a","b","c","d")
# 列表参数
PrintList(\@b,\@a);
#结果
1
2
3
4
列表为 : 1 2 3 4
列表为 : a b c d
取值的时候你可能注意到了 他是俩个符号并列
数组 : @$
标量:$$
字典 :%$
常用的就这几个,举个混合的例子
#!/usr/bin/perl
# 定义函数
sub PrintList{
my ($list1,$lsit2,$list3) = @_;
foreach $key ( @$list1 ){
print "$key \n";
}
print "$$list2\n";
foreach my $key ( keys %$hash ){
my $value = $hash{$key};
print "$key : $value\n";
}
}
@b = (1, 2, 3, 4);
$c = "what a fuck!"
%a = ('name' => 'hello', 'age' => 3);
# 列表参数
PrintList(\@b,\$c,\%a);
#结果
1
2
3
4
what a fuck!
age : 3
name : hello