perl语言学习笔记(3)列表与数组、子程序’、参数
1.列表和数组是什么?
列表指的是标量的有序集合,数组是存储列表的变量,在perl里这两个术语常常混用。但准确来讲,列表指的是数据,数组指的是变量。
2.数组和列表的特点?
数组或列表中的每个元素都有相应的整数作为索引,此数字从0开始递增,每次加1,所以数组或列表的头一个元素总是第0个元素。还有,列表或数组可能包含数字、字符串、undef值或不同类型标量值的混合,最常见的还是具有同一类型的一组元素。
3.如何访问数组中的元素?
数组元素是以连续的整数来编号的,从0开始,之后每个元素依次加1,如下所示:
$f[0]= "a";$f[1]= "b";$f[2]= "c";$f[3]= "d";
4.列表直接量
列表直接量(程序代码中表示一列数据的写法),可用圆括号内用逗号隔开的一串数据表示,这些数据就成为列表元素。如:
(1,2,3);(1,2,3,);();(1..100);
5.定义子程序
要定义子程序,使用关键字sub、子程序名,例如:
sub x{$n += 1;print "hello, sailor number $n!\n";
}
6.调用子程序
可以在人员表达式中使用子程序名(前面加上与号)来调用子程序
sub x{$n += 1;print "hello, sailor number $n!\n";
}
&x;
&x;
&x;
&x;
&x;
&x;
7.返回值:
很多时候,我们需要调用某个子程序并对它的返回值做进一步处理。所以需要注意子程序的返回值。在perl中,所有子程序都有一个返回值。子程序最后一次运算的结果会被自动当成子程序的返回值。比如:
$f = 3;
$b = 4;sub sum{print"hey, you called the sum subroutine ! \n";$f += $b;}$w = ∑
print "\$w is $w.\n";$be = 3 * ∑
print "\$be is $be.\n";
8.参数
perl可以有参数,要传递参数列表到子程序里,只要在子程序调用的后面加上括号圈引的列表表达式就行了。如
sub max{if($_[0] > $_[1]){$_[0];print"$_[0] > $_[1]";}else{$_[1];print"$_[1] > $_[0]";}
}$n = &max(10,15);#参数传递
9.变长参数列表
代码中会经常把任意长度的列表作为参数传递给子程序,然后可以通过@_来检查数组的长度,来确定参数个数是否正确。比如
sub max{if(@_ != 2){print "input error!\n";}if($_[0] > $_[1]){$_[0];print"$_[0] > $_[1]";}else{$_[1];print"$_[1] > $_[0]";}
}$n = &max(10,15,20);
10.改进的max函数子程序,接受任意参数数目
sub max{my($max_so_far) = shift @_; #数组中的第一个值暂定为最大值foreach(@_){ #遍历数组@_中其他元素if($_ > $max_so_far){ #当前元素和$max_so_far作比较$max_so_far = $_; }}print "最大值是:$max_so_far";
}$n = &max(10,15,20,22,98,53,107,77);
perl语言学习笔记(3)列表与数组、子程序’、参数相关推荐
- Perl 语言学习笔记 (一)
Perl是一种脚本语言.对于其详细的介绍,请自行查看维基百科http://zh.wikipedia.org/wiki/Perl或者百度百科http://baike.baidu.com/view/466 ...
- go语言学习笔记(5)数组与切片
数组与切片 1.数组与切片的相同以及不同点 它们都属于集合类型,它们的值都可以用来存储某一种类型的值,但是数组类型的值的长度是固定的,而切片类型的值是可变长的.数组的长度在声明它的时候必须给定并且以后 ...
- 【C语言学习笔记】: 一维数组
C语言一维数组的定义 一般形式 类型符 数组名[常量表达式] C语言使用一维数组注意事项 数组名的命名规则和变量名相同,遵循标识符命名规则. 在定义数组时,需要指定数组中元素的个数,方括号中的常量表达 ...
- C语言学习笔记(五) 数组
数组 数组的出现就是为了解决大量同类型数据的存储和使用的问题: 数组的分类:一维数组.二维数组. 一维数组:为多个变量连续分配存储控件:所有的变量的数据类型必须相同:所有变量所占的字节大小必须相等: ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}// ...
- 翁恺老师C语言学习笔记(九)数组的运算
· 在一组给定的数据中,如何找出某个数据是否存在? 先看一段代码 #include<stdio.h> /* 找出key在数组a中的位置 @param key 要寻找的数字 @param a ...
- 翁恺老师C语言学习笔记(八)数组
· 如何写一个程序计算用户输入的数字的平均数 用户输入正整数,并计算输入数字的平均数,如果输入"-1"表示输入结束: #include<stdio.h>int main ...
- R语言学习笔记:矩阵与数组(array)
元素可以保存在多个维度的对象中,数组存储的是多维数据元素,矩阵的是数组的特殊情况,它具有两维. 创建数组的几种方法. 1. > m<-c(45,23,66,77,33,44,56,12,7 ...
- c语言中void arrout,c语言学习笔记(数组、函数
<c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...
最新文章
- 判断奇偶microsoft visual basic_#梅园# 在心理学上面如何判断一个男生暗恋你的表现...
- 每日一皮:老大爷,您保持年轻的秘诀是什么
- UVM基础之------uvm_port_base
- leetcode 26 删除排序数组中的重复项
- python接口测试之requests详解_Python接口测试-requests库
- 安卓 spinner下拉框 做模糊查询_想做短视频不知道用什么工具?11个免费制作工具收藏起来...
- leetcode 491. 递增子序列 思考分析
- pytorch的4种边界Padding方法--ZeroPad2d、ConstantPad2d、ReflectionPad2d、ReplicationPad2d
- 泛型 java 总结_JAVA泛型总结
- struts中action名称反复导致的神秘事件
- 毕设题目:Matlab图像压缩
- 移动设备管理与OMA DM 协议 V5(3)
- linux内核创建ubi,Linux最新UBI文件系统介绍
- 软件服务器 配置文件,服务器生成软件配置文件
- 《这!就是街舞》,好综艺还是好生意?
- c++读取stl文件
- HDU 4960 Another OCD Patient 简单DP
- JAVA SE 13快速安装
- 出现找不到sct文件解决方法:.\Objects\MyFirstExample.axf: error: L6031U: Could not open scatter descript
- #9733;平衡法则在生活中的应用
热门文章
- python实现matlab_用matlab和python实现符号运算
- apm飞控制作_传统直接转矩控制
- 磁盘位置_Win10创建和附加虚拟硬盘|Win10怎么创建VHD虚拟磁盘
- sparksql 操作hive_Spark SQL 物化视图原理与实践
- git 创建新分支并关联远程分支_git常用操作命令归纳
- Spring Boot 导出Excel表格
- Go语言基础练习题系列2
- [USACO08MAR]土地征用Land Acquisition
- Cannot modify header information问题的解决方法【新浪云经常遇到的错误】
- 广播 BroadCastReceiver