perl学习之子例程
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学习之子例程的更多相关文章
- perl学习之路1
一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...
- Perl 学习笔记-高级控制结构
1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码; unless(<condition>){code...;} 等价于 if(<con ...
- Perl 学习笔记-标量数据
最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...
- perl学习之:subs函数
在Perl中,sub关键字主要是为了定义一个子例程,那么subs又是什么呢? 首先subs是一个函数,用于预先声明子例程,函数的参数是预声明的函数名列表.那么这个函数存在的意义是什么?首先,通过该函数 ...
- perl学习 之:my local our
范围声明 和全局声明类似,词法范围声明也是在编译时起作用的.和全局声明不同的是,词法范围声明的作用范围是从声明开始到闭合范围的最里层(块,文件,或者 eval--以先到者为准).这也是为什么我们称它为 ...
- perl学习之:use and require
本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...
- perl学习之路3
Perl编程之路3 标签: perl 列表与数组 Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混 ...
- perl学习之路2
这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用 ...
- perl学习笔记
一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl ...
随机推荐
- win10怎么修改DNS
方法/步骤 1 鼠标右键桌面单击此电脑--属性,如下图所示 2 进入电脑属性,选择控制面板主页,如下图所示 3 我们继续选择网络和Internet进入,如下图所示 4 进入网络和Internet, ...
- socketserver+socket实现较为复杂的ftp,支持多用户在线
客户端(ftp_client.py) import socketserver,json,hashlib,os from pymongo import MongoClient ''' *****要点** ...
- [译]Understanding ECMAScript 6 内容目录
说明 浏览器与Node.js兼容 这本书是写给谁的 概述 帮助与支持 基本知识 更好的Unicode支持 其他字符串变化 其他正则表达式变化 Object.is() 块绑定 解构赋值 数字 总结 函数 ...
- nodejs express 设置html后缀模板
express 框架的默认渲染模板的后缀是 ejs ,由于编译器在ejs的文件里写html代码没有高亮显示,所以使用html模板. 示例: var app = express(); app.set(' ...
- 集成SpringMVC, Spring, Mybatis环境
web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...
- 惊人的CSS和JavaScript动画logos例子
https://codepen.io/lindell/pen/mEVgJP Stack Overflow logo是我最喜欢的logo之一,因为它非常简单,但易于识别.并且这个片段动画点击预览Stac ...
- LOJ#111. 后缀排序(二分 hash)
题意 给出一个字符串,求出排名为$i$个字符串在原串中的开始位置 Sol 纪念一下这伟大的时刻qwq. 我用二分+hash把这题水过去了qwq. #include<cstdio> #inc ...
- 【学习笔记】CSS优先级规则
CSS的优先级规则很多地方的说法都是错误的,常见错误说法是inline css>内部样式>外部样式,其实并没有这种规定.真正的CSS优先级确定是通过特性值大小确定的,在特性值大小相同的情况 ...
- HashMap,你知道多少?
一.前言 HashMap在面试中是个火热的话题,那么你能应付自如吗?下面抛出几个问题看你是否知道,如果知道那么本文对于你来说就不值一提了. HashMap的内部数据结构是什么? HashMap扩容机制 ...
- uvm_globals——告诉这个世界我爱你
uvm_globals.svh 存放全局的变量和方法.当UVM平台启动时,便在uvm_globals查找相应的方法,uvm_globals 的方法实现也比较简单,就是调用uvm_root对应的方法.其 ...