设为首页 收藏本站
查看: 1060|回复: 0

[经验分享] Perl学习笔记-子程序

[复制链接]

尚未签到

发表于 2017-5-17 10:57:30 | 显示全部楼层 |阅读模式

  • 某个函数可以是子程序,也可以是Perl自带的函数。
  • Subroutines意思就是自定义的而非系统自带的函数。
  • 使用sub来定义子程序,例如 sub sayHello { print "Hello, World"}。
  • 子程序的定义是全局的。没有私有子程序。如果两个子程序的名字一样,后面的子程序将会覆盖前面定义的子程序。
  • 子程序使用&符号来调用。例如&sayHello;
  • 所有的Perl子程序默认都是有返回值,Perl的设计者觉得使用return是种浪费。
  • 最后一个表达式会作为返回值返回。
  • 子程序可以自带参数,而且参数的个数不限。每次子程序都把变长的参数放入@_的列表里面。子程序的第一个值放入$_[0],第二个值放入$_[1]。
  • 如果@_的参数个数跟预想的个数不一样,那么将会用undef。@_就是相当于用参数来初始化的列表。
  • @_对于子程序都是不一样的,都是子程序私有的。每个子程序都会被创建一个新的@_来使用。
  • 使用my可以用来初始化私有变量,变量可以私有,子程序不能私有。my可以是列表,例如my($param_1, $param_2),当my后面不是列表的时候,只能声明一个私有变量,例如my $param_1, $param_2。那么后面那个变量不是私有的。
  • 可以使用@_ != 2  来判断是否参数的个数为2, 尽管@_是一个列表,但是当在!= 2这样的上下文中,就会变成标量使用了。
  • 因为Perl默认是一种宽容的语言,如果你想要解释的时候有严格的语法控制,那么可以在文件的开头处添加 use strict;
  • Perl的子程序还是可以显示的使用return来进行返回的。
  • 两种情况下可以省略调用子程序的&,一种是调用之前已经把自定义的子程序放到调用语句之前,一种就是调用Perl自带的函数,两个的意思都是一样的。
  • Perl允许自定义的子程序和自带的函数名字一样,如果这个时候要使用自定义的子程序的话,那么加上&符号是必须的。
  答案:

sub above_average {
my $result = 0;
for (@_) {
$result += $_;
}
$average = $result / @_;
print "average is: " . $average . "\n";
@results = ();
for (@_) {
if ($_ > $average) {
push @results, $_ . "\n";
}
}
@results;
}


sub total {
my $result = 0;
for (@_) {
$result += $_;
}
$result;
}
@oneToThounsand = (1..1000);
print "----------result-------------\n";
print above_average(1200, @oneToThounsand);
#print "----------result-------------\n";
#print total(@oneToThounsand);
# @inputs = qw (122 223 444 55);
#print "----------result-------------\n";
#print total(@inputs);
#print "\n";
# @inputs = <STDIN>;
#print "----------result-------------\n";
#print total(@inputs);
#print "\n"

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378454-1-1.html 上篇帖子: perl 里的<>和 下篇帖子: Perl Language(V) File Handler
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表