1.system function  && user function

system fucntion:chomp  reverse print...

user function: &+indetifier

2.define a subroutine

sub subroutine_name {

body;

}

eg:sub marine{

$n +=1;

print "Hello,sailor number $n!\n";

}

3.call subroutine

& subroutine_name();

eg:&marine;

4.return value

子例程总是作为表达式的一部分被调用,即使并不需要表达式的结果.

每一个子例程在运行过程中,计算值是它一些列动作的一部分.在子例程中得到的最后一个计算值自动成为返回值.

eg:

sub sum_of_fred_and_barney{

print "Hey,you called the sum of fred and barney subroutine!\n";

$fred + $barney; #这不是真正的返回值

print "Hey,I'm returning a value now!\n";#糟了!!!

}

NOTE: 向子例程增加代码时要确保最后一个表达式的结果是你希望的返回值.

5.arguments

参数列表在子例程运行期间被自动地付给一个特别的数组变量@_.子例程可以访问这个变量以确定参数个数和参数的值.

所以:第一个参数$_[0]

第二个参数$_[1]

NOTE: $_ 与$_[0] $_[1] 完全是两回事,不要混淆了。

如果超出了@_数组范围,你将得到undef,@_变量是子例程的局部变量,总是当前子例程调用的参数列表。

6.subroutine 's private variable

default: perl中所有变量都使全局变量

但可以用my 声明私有变量

eg: sub max {

my($a,$b);

($a,$b) = @_;

if($a>$b) {$a} else {$b} ##不要分号

}

7.可变长参数列表

eg: $maximum  = &max(3,5,10,4,6);

sub max {

my($max_so_far) = shift @_;

foreach (@_) {

if ($_ > $max_so_far) {

$max_so_far = $_;

}

}

$max_so_far;

}

参数列表也有可能是空的 eg: $maximum = &max(@numbers); @numbers 有可能为空列表

8.my ---词法变量说明

词法变量的作用域限制在最小的封闭块或文件中。

任何新标量都以空开始------对标量是undef ,对数组是空列表。

9.use strict

use warning

尽量使用

10.return

return 之后的语句不在执行。

11.&

&开头,一定是子例程调用。但函数调用不一定有& ()。

perl的哲学是 没有必要的就不要。

perl学习之子例程的更多相关文章

  1. perl学习之路1

    一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...

  2. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  3. Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...

  4. perl学习之:subs函数

    在Perl中,sub关键字主要是为了定义一个子例程,那么subs又是什么呢? 首先subs是一个函数,用于预先声明子例程,函数的参数是预声明的函数名列表.那么这个函数存在的意义是什么?首先,通过该函数 ...

  5. perl学习 之:my local our

    范围声明 和全局声明类似,词法范围声明也是在编译时起作用的.和全局声明不同的是,词法范围声明的作用范围是从声明开始到闭合范围的最里层(块,文件,或者 eval--以先到者为准).这也是为什么我们称它为 ...

  6. perl学习之:use and require

    本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...

  7. perl学习之路3

    Perl编程之路3 标签: perl 列表与数组   Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混 ...

  8. perl学习之路2

    这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用 ...

  9. perl学习笔记

    一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl ...

随机推荐

  1. C - Heavy Transportation

    //改版dijkstra #include <iostream> #include <algorithm> #define Faster ios::sync_with_stdi ...

  2. @PathVariable注解的使用

    带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义. 通过 @PathVariable 可以将 URL 中占位符参数绑 ...

  3. scrapy框架中Spiders用法

    scrapy框架中Spiders用法 Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据 总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以 ...

  4. Action类为何要 extends ActionSupport以及实现ModelDriven

    http://blog.sina.com.cn/s/blog_164e377490102wqhk.html

  5. vue 中的router 配置问题 导致的内存溢出~~~

    最近的项目用到 vue, 各种踩坑中. 其中一个就是router映射表写的稍有不慎,就会出现内存溢出的问题, 而且也不会具体告诉你哪里出错,所以很是头疼~~~ 出错多了,发现了一些router的一些规 ...

  6. 关于gc日志中Desired Survivor的疑问和对象晋升老年代的小结

    问题背景 (下面的所有内容都是根据书上的Serial/Serial Old收集器下的情况) 在<深入理解JVM>一书中的——3.6.3长期存活的对象将进入老年代的介绍中, 一个例子的jvm ...

  7. D. Caesar's Legions 背包Dp 递推DP

    http://codeforces.com/problemset/problem/118/D 设dp[i][j][k1][k2] 表示,放了i个1,放了j个2,而且1的连续个数是k1,2的连续个数是k ...

  8. AQS及其前置知识总结

    CLH队列锁 及自旋锁 乐观锁及CAS 独占锁与共享锁 LockSupport与wait ,join和notify 这里截取内部类Node的部分代码,节点的状态值如下: /** waitStatus ...

  9. 数据库 join

    数据库 join 最近有个项目用到了数据库,写 sql 时有联表查询,不知道怎么写,怎过滤,查了一些资料,补充了一些知识点. 以下是链接: 维基百科 JOIN关联表中ON,WHERE后面跟条件的区别 ...

  10. js js弹出框、对话框、提示框、弹窗总结

    js弹出框.对话框.提示框.弹窗总结 一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹 ...