- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Perl 子程序(函数)
Perl ⼦程序(函数)
Perl ⼦程序(函数)
Perl ⼦程序也就是⽤户定义的函数。
Perl ⼦程序即执⾏⼀个特殊任务的⼀段分离的代码,它可 使减少重复代码且使程序
易读。
Perl ⼦程序可 出现在程序的任何地⽅,语法格式如下:
sub subroutine{
statements;
}
调⽤⼦程序语法格式:
subroutine( 参数列表 );
在 Perl 5.0 下版本调⽤⼦程序⽅法如下:
subroutine( 参数列表 );
在新版本上,虽然也⽀持该调⽤⽅法,但不推荐使⽤。
接下来我们来看⼀个简单是实例:
# !/usr/bin/perl
# 函数定义
sub Hello{
print Hello, World!\n;
}
# 函数调⽤
Hello();
执⾏ 上程序,输出结果为:
Hello, World!
向⼦程序传递参数
Perl ⼦程序可 和其他编程⼀样接受多个参数,⼦程序参数使⽤特殊数组 @_ 标明。
因此⼦程序第⼀个参数为 $_ [0], 第⼆个参数为 $_ [1], 此类推。
不论参数是标量型还是数组型的,⽤户把参数传给⼦程序时,perl默认按引⽤的⽅式
调⽤它们。
# !/usr/bin/perl
# 定义求平均值函数
sub Avera e{
# 获取所有传⼊的参数
$n = scalar(@_);
$sum = 0;
foreach $item (@_){
$sum += $item;
}
$avera e = $sum / $n;
print 传⼊的参数为 : ,@_\n; # 打印整个数组
print 第⼀个参数值为 : $_[0]\n; # 打印第⼀个参数
print 传⼊参数的平均值为 : $avera e\n; # 打印平均值
}
# 调⽤函数
Avera e(10, 20, 30);
执⾏ 上程序,输出结果为:
传⼊的参数为 : 10 20 30
第⼀个参数值为 : 10
传⼊参数的平均值为 : 20
⽤户可 通过改变 @_ 数组中的值来改变相应实际参数的值。
向⼦程序传递列表
由于 @_ 变量是⼀个数组,所 它可 向⼦程序中传递列表。
但如果我们需要传⼊标量和数组参数时,需要把列表放在最后⼀个参数上,如下所
⽰:
# !/usr/bin/perl
# 定义函数
sub PrintList{
my @list = @_;
print 列表为 : @list\n;
}
$a = 10;
@b = (1, 2, 3, 4);
# 列表参数
PrintList($a, @b);
上程序将标量和数组合并了,输出结果为:
列表为 : 10 1 2 3 4
我们可 向⼦程序传⼊多个数组和哈希,但是在传⼊多个数组和哈希时,会导致丢失
独⽴的标识。所 我们需要使⽤引⽤ (下⼀章节会介绍)来传递。
向⼦程序传递哈希
当向⼦程序传递哈希表时,它将复制到 @_ 中,哈希表将被展开为键/值组合的列表。
# !/usr/bin/perl
# ⽅法定义
sub PrintHash{
my (%hash) = @_;
foreach my $key ( keys %hash ){
my $value = $hash{$key};
print $key : $value\n;
}
}
%hash = (name = youj, a e = 3);
# 传递 希
PrintHash(%hash);
上程序执⾏输出结果为:
a e : 3
name : youj
⼦程序返回值
⼦程序可 向其他编程语⾔⼀样使⽤ return 语句来返回函数值。
如果没有使⽤ return 语句,则⼦程序的最后⼀⾏语句将作为返回值。
# !/usr/bin/perl
# ⽅法定义
sub add_a_b{
# 不使⽤ return
$_[0]+$_[1];
# 使⽤ return
# return $_[0]+$_[1];
}
print add_a_b(1, 2)
上程序执⾏输出结果为:
3
⼦程序中我们可 返回标量,数组和哈希,但是在返回多个数组和哈希时,会导致丢
失独⽴的标识。所 我们
文档评论(0)