Perl 语言.

Slides:



Advertisements
Similar presentations
死亡是人生必經的歷程 也是每個人最終都要面對的人生大事. 大多數人很避諱談論死亡,深怕說 出「死亡」會帶來惡運,還有和死 亡相關的禁忌如:醫院和飯店電梯 按鈕都沒有四樓,紅包避諱包和 相關數字,這些都是每個人心 中的禁忌。
Advertisements

贵州职业 技术学院 商贸系 徐晓莉. 2 说课内容 课程分析 课程教学设计 课程特色 课程资源 课程评价.
教学设计要素分析 太原师范学院 丁相平
特刊——三月 ISSN > 杏子河电子刊物出版社 欢迎订阅
2013年上半年 各地养老服务政策 主讲人:老年人福利处 张晓峰.
日月光·伯爵居项目介绍.
香港故事之 三年零八個月的艱苦歲月 組員: 梁珮瑩 吳遠莉 李琪 李青儀 方松皓.
语文组:藏在泉州古巷中的美食 结题报告.
唐山美食 ——特色小吃.
保良局何壽南小學 使用牙膏對我們生活的影響 六年級專題報告 姓名﹕李燊樺 班別﹕6B 日期﹕
藥物濫用 華德學校 楊凱喬.
我的故事 ————往事回首.
中國歷史人物武則天 G組組員 韋紫恩, 余詩琪 蔡煦齡, 黃榮紳,.
外科护理学 沧州医学高等专科学校.
郭子光教授从肺肾虚损辨治早中期慢性肾功能不全的经验
女生成功靠什么? 09英本四班 傅柏双.
国际投资环境罗氏评级法 美国.
社会保障学 第5章 失业保险.
~永靖國小友善校園週宣導~ 友善校園週宣導 胡慧嘉 校長.
主 题 班 会 团 结   协 作    力 量.
理想.
國立臺灣海洋大學 經費核銷應注意事項 會計室報告 99年4月29日.
技能竞赛促进专业建设 常州刘国钧高等职业技术学校 信息工程系 李文刚
熊貓 設計者:鄧澤怡 班別:6B2 學校:華德學校.
固定与搬运技术 义乌市中心医院 陈红卫.
浅谈---- 敦煌莫高窟 的保护
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
POP字体设计 陈志鹏 广告1231.
案例分析 胎记美容记 第6小组
Oracle数据库 Oracle 子程序.

第四章 员工招聘与甄选.
人生五色臉 年輕十歲必學的小動作,九個保持身體健康的的小訣竅 人們常在不經意間做些小動作,並認為這是身體的本能反應,
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第九章 字符串.
Hadoop I/O By ShiChaojie.
VB程序设计语言 主讲教师:王 杨.
走进编程 程序的顺序结构(二).
元素替换法 ——行列式按行(列)展开(推论)
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
北極熊 華德學校 田根繩.
Perl 语言 1.
从zval看PHP变量
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
顺序表的删除.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第二章 Java基本语法 讲师:复凡.
VB与Access数据库的连接.
瀕臨絕種—北極熊 設計者:吳柏曦 班別:5B1 學校:華德學校.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Web安全基础教程
ES 索引入门
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
基础信贷法律知识 讲解人:岳杨.
圖書館參訪------政大 宇宙即圖館,圖書即宇宙.
§4.5 最大公因式的矩阵求法( Ⅱ ).
顺序结构程序设计 ——关于“字符串”和数值.
第二次课后作业答案 函数式编程和逻辑式编程
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

Perl 语言

第三章 列表与数组 ※ 1 列表直接量 ※ 2 列表相关操作符 3 foreach循环结构 ※ △ 4 标量上下文与列表上下文

3.1 列表直接量 列表是指数据,而数组是其变量名; 每个数组标量都有一个列表,列表可以为空。 标量 标量变量 列表(标量集合) 数组

列表示例 包含5个元素的列表 35 12.4 “hello” 1.72e30 “bye\n” 1 2 3 4

列表特点 35 12.4 “hello” 1.72e30 “bye\n” 1 2 3 4 1.每个元素都是单独的标量变量 2.元素值是有序的 1 2 3 4 列表特点 1.每个元素都是单独的标量变量 2.元素值是有序的 3.元素索引从‘0’开始,每次递增1 4.元素值之间互不相关, “数字”,“字符串”,“undef”或其他类型数据 5.数组/列表的“无限制性”

访问数组中的元素 数组中的元素由连续整数编号,其从0开始,每增加一个元素,其索引值加一,如 $fred[0] = “yabba”; $fred[1]= “dabba”; $fred[2] = “doo” 数组名字(fred)和标量属于完全不同的命名空间。 同一程序可以同时包含$fred(标量变量)和fred命名的数组(运行例子)。

访问数组中的元素 数组元素($fred[2])使用与标量变量($fred)相同 print $fred[0] ; $fred[2] = “diddley”; $fred[1] .= “whatsis”; $number = 2.71828; print $fred[$number-1] ; #与print $fred[1]一样 $blank = $fred [142_857]; #该数组元素未存值,undef $blank = $mel; #$mel 未初始化,undef

访问数组中的元素 特殊数组索引 负数数组索引:从数组的尾端往回计数。 超出数组大小的负数索引值,返回undef,不会绕回数组尾部(运行例子) $number = 2.71828; print $fred[$number-1] ; #和print $fred[1]一样 print $fred[$number-2],"\n" ; print $fred[$number-3],"\n" ; print $fred[$number-4],"\n" ; print $fred[$number-5],"\n" ; print $fred[$number-6],"\n" ; print $fred[$number-7],"\n" ; 负数数组索引:从数组的尾端往回计数。 超出数组大小的负数索引值,返回undef,不会绕回数组尾部(运行例子)

访问数组中的元素 特殊数组索引 $rocks[0] = ‘bedrock’; #一个元素 $rocks[1] = ‘slate’; #又一个 $rocks[2] = ‘lava’; #又一个 $rocks[3] = ‘crushed rock’; #又一个 $rocks[99] = ‘schist’; #现在有95 个undef 元素 $end = $#rocks; #99, $number_of_rocks = $end + 1; #正确,更好的方法 $rocks[$#rocks] = ‘hard rock’; #the last rock $rocks[-1] = ‘hard rock’; #better $dead_rock = $rocks[-100]; #‘bedrock’ $rocks[-200] = ‘crystal’; #严重错误(fatal error!)

列表直接量 列表直接量:圆括号内用逗号隔开的一串数据 范围操作符:.. (1,2,3) #含有1,2,3 的列表 (1,2,3) #含有1,2,3 的列表 (1,2,3,) #同上,最后一个逗号被忽略 () #空列表-0 个元素 (1 ..100) #包含100 个整数的列表 范围操作符:.. (1 ..5) #同(1,2,3,4,5) (1.7..5.7) #同上— 转换成整数 (5 ..1) #空— ..左值应小于右值,否则为空 (0,2.. 6,10,12) #同(0,2,3,4,5,6,10,12) ($m ..$n) #由$m 和$n 的值决定 (0 .. $#rocks) (“fred”, “barney”, “betty”, “wilma”, “dino”)

qw 简写 Perl中经常需要建立单词列表,可以使用qw简写。 qw-“quoted words”或“quoted by whitespace,” (“fred”, “barney”, “betty”, “wilma”, “dino”) qw(fred barney betty wilma dino ) Perl 将它们当作单引号字符串处理,不能像双引号那样在qw 中使用(\n) 和($fred)(运行例子)。

qw 简写 qw(fred barney betty wilma dino) #qw自动忽略空白(空格、制表符、换行符), 剩下的就是列表的元素 qw ( fred barney betty wilma dino ) #推荐写成这样

qw 简写 qw ! fred barney betty wilma dino ! qw !Yahoo \! Google excite lycos ! qw (Yahoo \! Google excite lycos ) qw !Yahoo \\ Google excite lycos !

3.2列表相关操作--赋值 与标量值类似,列表值也可以赋给变量: ($fred, $barney, $dino) = (“flintstone”, “rubble”, undef); ($fred, $barney) = ($barney, $fred) #交换两个变量 ($betty[0],$betty[1]) = ($betty[1],$betty[0]); ($fred, $barney) = qw <flintstone rubble slate>; #一个值被忽略了 ($wilma,$dino) = qw[flintstone]; #$dino 为undef ($rocks[0],$rocks[1],$rocks[2],$rocks[3] ) = qw/talc mica feldspar quartz/; @rocks = qw /talc mica feldspar quartz /;

列表的赋值 数组表示方式 @ @rocks = qw / bedrock slate lava /; @tiny = (); #空表 @giant = 1..1e5; #包含100,000 个元素的表 @stuff = (@giant, undef, @giant); #包含200,001 个元素的表 @dino = “granite”; @quarry = (@rocks, “crushed rock”, @tiny, $dino); @copy = @quarry; #将一个数组中的值拷贝的 另一个数组中

pop 和push 操作 要新增元素到数组尾端,只要将它存在更高索引(index)对应的新位置。 一些相关的小技巧。 35 12.4 “hello” 1.72e30 “bye\n” 1 2 3 4 pop ‘new variable’ push 5

pop 和push 操作 pop 将数组的最后一个元素取出并返回: @array = 5..9; $fred = pop(@array); #$fred 得到9,@array 现在为 (5,6,7,8) $barney = pop @array; #$barney gets 8, @array 现在为 (5,6,7) pop @array; #@array 现在为(5,6)(7 被丢 弃了) 如果数组为空,那pop 什么也不做(因为没有元素可以移出),并返回undef。

pop 和push 操作 push,将一个元素(或一列元素)加在数组的末尾 push(@array,0); #@array 现在为(5,6,0) push @array,8; #@array 现在为(5,6,0,8) push @array,1..10; #@array 现在多了10 个元素 @others =qw/9 0 2 1 0 /; push @array, @others; #@array 现在又多了5 个元素

shift 和unshift 操作 对一个数组的开头进行增减元素操作 35 12.4 “hello” 1.72e30 “bye\n” 1 2 ‘new variable’ unshift 35 12.4 “hello” 1.72e30 “bye\n” 1 2 3 4 shift

shift 和unshift 操作 @array = qw # dino fred barney #; $m = shift (@array); #$m 得到“dino”, @array 现在为(“fred”, “barney”) $n = shift @array; #$n 得到”fred”, @array 现在为(“barney”) shift @array; #@array 现在为空 $o = shift @array; #$o 得到undef, @array 仍为空 unshift (@array,5) ; #@array 现在为(5) unshift @array,4; #@array 现在为(4,5) @others = 1..3; unshift @array, @others; #array 现在为(1,2,3,4,5)

Splice操作符 对数组的中间元素进行操作(四个参赛) 参数1:要操作的目标数组 参数2:要操作的一组元素的开始位置 参数3:指定要操作的元素长度 参数4:要替换的列表 @array = qw{ pebbles dino fred barney betty}; @removed = splice @array, 2; #在原来的数组中删除fred及其 后的元素,@removed变成( pebbles dino ) @array变成( fred barney betty )(运行例子)

Splice操作符 @array = qw{ pebbles dino fred barney betty}; @removed = splice @array, 1,2,qw(wilma); @removed = splice @array, 1,0,qw(wilma);

将数组插入字符串 双引号内的数组变量内插 @rocks = qw{ flintstone slate rubble }; print “quartz @rocks limestone\n”; #输出为5 种rocks 由空格分开, print “Three rocks are: @rocks.\n”; print “Three rocks are:@rocks.\n”; print “There’s nothing in the parens (@empty) here..\n”

将数组插入字符串 当把email 地址插入双引号字符串时可能出现意想不到的结果 $email =“fred@bedrock.edu”; #错误!将会替换@bedrock $email =“fred\@bedrock.edu”; #正确 $email =‘fred@bedrock.edu’; #另一种方法

将数组插入字符串 除了整个数组可以进行字符串内插,单个数组变量也可以 @fred = qw(hello dolly); $y = 2; $x =“This is $fred[1]’s place”; # “This is dolly’s place” $x =“This is $fred[$y-1]’s place”; #同上

将数组插入字符串 一个标量变量后接一个左中括号符, @fred = qw(eating rocks is wrong); $fred = “right”; #我们将打印“this is right[3]” print “this is $fred[3]\n”; #打印出“wrong”使用$fred[3] print “this is ${fred}[3]\n”; #打印出“right”(由花括号分开) print “this is $fred”. “[3]\n”; #正确(两个字符串,右. 分开) print “this is $fred\[3]\n”; #正确(利用反斜线)

3.3 foreach 控制结构 foreach 从列表的第一个元素一直循环执行到最后一个元素,一次迭代一个: foreach $rock (qw / bedrock slate lava / ) { print “One rock is $rock.\n”; #打印出3 种rocks }

3.3 foreach 控制结构 控制变量(本例中为$rock)每次迭代从列表中取一个新值;控制变量不是元素拷贝而是元素本身。如果循环中修改该变量,原始列表中的元素也会被修改; @rocks = qw/ bedrock slate lava /; foreach $rock(@rocks){ $rock = “\t$rock”; #@rocks 的每一个元素前加入一个tab $rock . = “\n”; #每一个元素后加一个换行符 } print “The rocks are:\n”,@rocks; #每一个元素都被缩进了,并且一个元素占一行 (运行例子)

Perl 常用默认变量:$_ foreach 循环中省略了控制变量,那Perl 会使用其默认的变量:$_。 print “I can count to $_!\n”; } $_ =“Yabba dabba doo\n”; print; #打印出默认变量$_。

reverse 操作 reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回 @fred = 6 ..10; @barney = reverse (@fred); #得到10,9,8,7,6 @wilma = reverse 6 ..10; #同上,没有使用额外的数组 @fred = reverse @fred; #将逆转过的字符串存回去 reverse @fred; #错误,没有改变@fred 的值 @fred = reverse @fred; # 改变了@fred 的值

sort 操作 sort 将输入的一串列表根据内部的字符顺序进行排序 @rocks = qw/ bedrock slate rubble granite /; @sorted = sort(@rocks); #得到bedrock, granite, rubble, slate @back = reverse sort @rocks; #为slate 到bedrock @rocks = sort @rocks; #将排序的值写回@rocks @numbers = sort 97 ..102; #得到100,101,102,97,98,99 sort @rocks; #错误,不会修改@rocks @rocks = sort @rocks; #现在@rocks 值是经过排序的

3.4 标量和列表上下文 一个给定的表达式在不同的上下文中其含义是不同的。 42 + something #something 必须是标量 sort something #something 必须是列表 @people = qw( fred barney betty ); @sorted = sort @people; #列表context:barney , betty, fred $number = 42 + @people; #标量context:42+3,得到45

3.4 标量和列表上下文 强制引入标量 Print “I have”,scalar @rocks,“\n”; @rocks = qw/ bedrock slate rubble granite /; Print “I have”,scalar @rocks,“\n”; 列表上下文中的<STDIN> @lines=<STDIN>;#从键盘输入的时候以ctr+z chomp(@lines);

本章小结 掌握:数组的基本操作和foreach 熟悉:基本函数如pop push…

Thank You ! www.themegallery.com