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)列表与数组、子程序’、参数相关推荐

  1. Perl 语言学习笔记 (一)

    Perl是一种脚本语言.对于其详细的介绍,请自行查看维基百科http://zh.wikipedia.org/wiki/Perl或者百度百科http://baike.baidu.com/view/466 ...

  2. go语言学习笔记(5)数组与切片

    数组与切片 1.数组与切片的相同以及不同点 它们都属于集合类型,它们的值都可以用来存储某一种类型的值,但是数组类型的值的长度是固定的,而切片类型的值是可变长的.数组的长度在声明它的时候必须给定并且以后 ...

  3. 【C语言学习笔记】: 一维数组

    C语言一维数组的定义 一般形式 类型符 数组名[常量表达式] C语言使用一维数组注意事项 数组名的命名规则和变量名相同,遵循标识符命名规则. 在定义数组时,需要指定数组中元素的个数,方括号中的常量表达 ...

  4. C语言学习笔记(五) 数组

    数组 数组的出现就是为了解决大量同类型数据的存储和使用的问题: 数组的分类:一维数组.二维数组. 一维数组:为多个变量连续分配存储控件:所有的变量的数据类型必须相同:所有变量所占的字节大小必须相等: ...

  5. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}// ...

  6. 翁恺老师C语言学习笔记(九)数组的运算

    · 在一组给定的数据中,如何找出某个数据是否存在? 先看一段代码 #include<stdio.h> /* 找出key在数组a中的位置 @param key 要寻找的数字 @param a ...

  7. 翁恺老师C语言学习笔记(八)数组

    · 如何写一个程序计算用户输入的数字的平均数 用户输入正整数,并计算输入数字的平均数,如果输入"-1"表示输入结束: #include<stdio.h>int main ...

  8. R语言学习笔记:矩阵与数组(array)

    元素可以保存在多个维度的对象中,数组存储的是多维数据元素,矩阵的是数组的特殊情况,它具有两维. 创建数组的几种方法. 1. > m<-c(45,23,66,77,33,44,56,12,7 ...

  9. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

最新文章

  1. 判断奇偶microsoft visual basic_#梅园# 在心理学上面如何判断一个男生暗恋你的表现...
  2. 每日一皮:老大爷,您保持年轻的秘诀是什么
  3. UVM基础之------uvm_port_base
  4. leetcode 26 删除排序数组中的重复项
  5. python接口测试之requests详解_Python接口测试-requests库
  6. 安卓 spinner下拉框 做模糊查询_想做短视频不知道用什么工具?11个免费制作工具收藏起来...
  7. leetcode 491. 递增子序列 思考分析
  8. pytorch的4种边界Padding方法--ZeroPad2d、ConstantPad2d、ReflectionPad2d、ReplicationPad2d
  9. 泛型 java 总结_JAVA泛型总结
  10. struts中action名称反复导致的神秘事件
  11. 毕设题目:Matlab图像压缩
  12. 移动设备管理与OMA DM 协议 V5(3)
  13. linux内核创建ubi,Linux最新UBI文件系统介绍
  14. 软件服务器 配置文件,服务器生成软件配置文件
  15. 《这!就是街舞》,好综艺还是好生意?
  16. c++读取stl文件
  17. HDU 4960 Another OCD Patient 简单DP
  18. JAVA SE 13快速安装
  19. 出现找不到sct文件解决方法:.\Objects\MyFirstExample.axf: error: L6031U: Could not open scatter descript
  20. #9733;平衡法则在生活中的应用

热门文章

  1. python实现matlab_用matlab和python实现符号运算
  2. apm飞控制作_传统直接转矩控制
  3. 磁盘位置_Win10创建和附加虚拟硬盘|Win10怎么创建VHD虚拟磁盘
  4. sparksql 操作hive_Spark SQL 物化视图原理与实践
  5. git 创建新分支并关联远程分支_git常用操作命令归纳
  6. Spring Boot 导出Excel表格
  7. Go语言基础练习题系列2
  8. [USACO08MAR]土地征用Land Acquisition
  9. Cannot modify header information问题的解决方法【新浪云经常遇到的错误】
  10. 广播 BroadCastReceiver