文章目录
一、函数
函数也就是子程序,一般语言中函数三个特点,调用,传参以及返回。
1.1 关于调用
perl
中函数可以分为用户函数与系统函数,sub
关键字用于定义Perl
程序中的用户函数
以下例子:
sub my_print {
print("hello, world!\n");
}
# 函数调用,在perl5.0以下的版本需要加上&,函数没有传参时,可以不打括号,以下三种类型都是表示调用,
&my_print;
my_print;
my_print();
1.1 关于传参
perl
函数传参,跟其他语言有点不一样,使用特殊数组@_
存储所有传入的参数,第一个参数是 $_[0]
,第二个参数是$_[1]
,以此类推。
以下例子:
#!/usr/bin/perl -w
# defining Average
sub Average {
# 获取所有传入的参数, @_ 代表传入的数组
$n = scalar(@_);
$sum = 0;
foreach $item (@_) {
$sum += $item;
}
$average = $sum / $n;
# 打印整个数组, 10, 11, 12
print("传入的参数为: ", "@_\n");
# 打印第一个参数, 10
print("第一个参数值为: ", "$_[0]\n");
# 打印第二个参数, 11
print("第二个参数值为: ", "$_[1]\n");
# 打印倒数第一个参数, 12
print("第二个参数值为: ", "$_[-1]\n");
# 打印平均值,11
print("传入参数的平均值为:", "$average\n");
}
# calling Average
Average(10, 20, 30);
注意:当传入的参数是数组时,perl
会取出数组中元素存到@_
特殊数组中。当传入参数时哈希时,perl
会将它哈希中键值对复制到 @_
中,哈希表将被展开为键/值组合的列表,以下例子:
#!/usr/bin/perl
# defining PrintList
sub PrintList{
my @list = @_;
print "\@list: ", "@list\n";
}
@b = (1, 2, 3, 4);
# calling PrintList
PrintList(@b);
# defining PrintHash
# 哈希表被当做键值对依次展开存储到@_中,按照平铺的写法,仍然可以认为这个是哈希表
sub PrintHash{
# 将@_当做哈希表处理
my %hash = @_;
foreach my $key (keys(%hash)) {
my $value = $hash{$key};
print "$key : $value\n";
}
}
%hash = ('name' => 'runoob', 'age' => 3);
# calling PrintHash, name: rob age: 3
PrintHash(%hash);
1.2 关于返回
使用return
做标志返回比较好,以下举例:
#!/usr/bin/perl
# defining add_a_b
sub add_a_b{
return $_[0]+$_[1];
# 也可以不要return做返回标志,默认最后一行可以做返回
# $_[0]+$_[1];
}
# calling add_a_b, 使用$re接收返回值
$re = add_a_b(1, 2);
print("\$re: ", "$re\n");
2、系统函数
2.1 system函数
2.2 fork函数
2.3 pipe函数
2.4 exce函数
2.5 syscall函数
2.6 die函数
2.7 warn函数
2.8 exit函数
2.9 kill函数
2.10 sleep函数
2.11 wait函数
2.12 waitpid函数
2.13 caller函数
2.14 chroot函数
2.15 local函数
面向对象
占坑
总结
参考博客:Perl自学(10)——函数
参考博客:汇总 perl 常用系统函数