已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组是一组有序排列的标量,如字符串和/ 或数字。数组中的各个元素由从0 开始的整数来索引。数组变量名以“”符号开头names = ( Jessica, Michelle, Linda );print $names; #Prints the array with elements separated by a spaceprint $names0 and $names2; #Prints Jessica and Lindaprint $names-1n; # Prints LindaPerl 提供了大量的预定义变量。下面列举了常用的一些预定义变量:$_ 在执行输入和模式搜索操作时使用的默认空格变量$. 文件中最后处理的当前行号$ 由最近一个eval() 运算符提供的Perl 语法报错信息$! 获取当前错误信息值,常用于die 命令$0 含有正在执行的程序名$ 正在执行本脚本的Perl 进程号$PERL_VERSION / $V Perl 解释器的版本、子版本和修订版本信息ARGV 含有命令行参数ARGV 一个特殊的文件句柄,用于遍历 ARGV 中出现的所有文件名INC 库文件的搜索路径_ 在子例程中,_ 变量含有传给该子例程的变量内容%ENV 关联数组型变量%ENV 含有当前环境信息%SIG 关联数组型变量%SIG 含有指向信号内容的句柄EXAMPLE$my_year = 2000;if ( is_leap_year( $my_year ) ) # Call function with an argumentprint $my_year is a leap yearn;else print $my_year is not a leap year;sub is_leap_year # Function definitionmy $year = shift(_); # Shift off the year from# the parameter list, _return ($year % 4 = 0) & ($year % 100 != 0) |($year % 400 = 0) ? 1 : 0; # What is returned from the functionTo write to a file:open(FH, file) or die Cant open file: $!n;print FH This line is written to the file just opened.n;print FH And this line is also written to the file just opened.n;abc 匹配字符既不是a 又不是b 也不是c 的情况在命令行下传送参数。Perl 通过ARGV 数组保存了命令行提供的参数内容。如果用到了ARGV 文件句柄,则这些命令行参数将被视为文件;否则就视为是来自命令行环境的字符串,供脚本直接使用.$response=lc($response); # response is converted to lowercaseprint Today is $now, $name.;print Today is $now, $name.;Today is Sat Mar 24 15:46:08 2007, Ellie.Today is $now, $name. 当字符串位于单引号之间时,print 函数会把他们当作纯字符串予以输出。Perl 的替换符号。 Perl 提供了另一种表示引号的形式即q、qq、qx 和qw 结构。 q 代表一个单引号。 qq 代表一个双引号。 qx 代表一个反引号。 qw 代表引用的字列表。q/Hello/ Helloqq/Hello/ “Hello”qx/date/ datelist=qw/red yellow blue/; list= red , yellow , blue $size=items; 将数组items 赋值给一个标量型变量$size。该标量的值将是数组中的元素个数1 grades = (90,89,78,100,87);print The original array is: gradesn;2 print The number of the last index is $#gradesn;3 $#grades=3;print The array is truncated to 4 elements: gradesn;4 grades=();print The array is completely truncated: gradesn;(Output)The original array is: 90 89 78 100 87The number of the last index is 4The array is truncated to 4 elements: 90 89 78 100The array is completely truncated:解释:1. 把一个含有5 个数字的列表赋予grades 数组。2. $# 结构能够获得数组最后一个元素的下标(即索引值)。3. 将数组下标缩减为3。4. 本行使用了一个空列表,使得该数组被完全清空为空列表。fruit = qw(apples pears peaches plums);print Starting at the end of the array; fruit-1, -3n;当使用负数作为下标时,将从数组末端选择数组元素。其中,最后元素($fruit-1) 是plums,而倒数第三个元素($fruit-3) 则是pears。请注意,当索引值位于同一组括号中时,譬如($fruit-1,-3),则表示引用列表而非标量。这也是为什么要在数组名前面带有 而非$ 符号。数组分片(Array Slices)。当把某个数组的值赋予到另一个数组中时,得到的数组称之为数组分片。如果位于赋值运算符右侧的数组长度大于左边的数组,Perl 会把多余的那部分元素丢弃;否则,则将剩余的元素赋值为未定义值。如下面的示例所示,位于数组片中的索引不必是连续编号;只需为每个元素指定赋值运算符右侧的相应数组元素即可。(The Script)# Array slices1 colors=(red,green,yellow,orange);2 ($c0, $c1,$c3, $c5)=colors; # The slice3 print *n;4 print colors,n; # Prints entire array, but does# not separate elements quoted5 print colors,n; # Prints the entire array with# elements separated6 print *n;7 print $c0,n; # red8 print $c1,n; # green9 print $c2,n; # undefined10 print $c3,n; # yellow11 print $c4,n; # undefined12 print $c5,n; # orange13 print *n ;14 print The size of the c array is , $#c + 1,.n;(Output)3 *4 redgreenyelloworange5 red green yellow orange6 *7 red8 green910 yellow1112 orange13 *14 The size of the c array is 6.在索引散列时,应当使用花括号,而不是方括号。%seasons=(Sp = Spring,Su = Summer,F = Fall,W = Winter,); %days=(Mon = Monday,Tue = Tuesday,Wed = undef,); $daysWed=Wednesday; 散列内的单个元素是标量型的。本行将向Wed 键赋字符串值Wednesday。其下标包含于花括号中。 $days5=Friday; 向键5 赋字符串值Friday。请注意,键是没有连续编号的,而键/ 值对则可通过序号和/ 或字符串构成。(The Script)# Nested hashesvalueskeys key value key value1 %students=( Math = Joe = 100, Joan = 95 ,Science = Bill = 85, Dan = 76 );2 print On the math test Joan got ;3 print qq/$studentsMath-Joan.n/;4 print On the science test Bill got ;5 print qq/$studentsScience-Bill.n/;(Output)3 On the math test Joan got 95.5 On the science test Bill got 85.散列%student 由两个键组成:Math 和Science。与这些键相关联的值则位于花括号中,并含有嵌套的键/ 值对。Math 键的相应值中含有两个嵌套的键:Joe 和Joan,其值分别是100与95。Science 键的相应值中则含有另外两个嵌套的键:Bill 和Dan,其值分别是85 和76。所有嵌套的键和值都位于一个匿名的散列表中。 箭头运算符-(或中缀运算符)用于访问散列%students 中匿名散列内的值。(The Script)# Anonymous arrays as keys in a hash1 %grades=(Math = 90, 100, 94 ,Science = 77, 87, 86 ,English = 65, 76, 99, 100 ,);2 print %grades, n;3 print The third math grade is: $gradesMath-2n;4 print All of the science grades are: $gradesSciencen;(Output)2 EnglishARRAY(0x8a65128)ScienceARRAY(0x8a650b0)MathARRAY(0x8a6f134)3 The third math grade is: 944 All of the science grades are: 77 87 86The Script)# Searching for patterns in a list1 list = (tomatoes, tomorrow, potatoes, phantom, Tommy);2 $count = grep( /tom/i, list);items= grep( /tom/i, list);print Found items: itemsnNumber found: $countn;(Output)4 Found items: tomatoes tomorrow phantom TommyNumber found: 4解释:1. 把数组line 赋值为列表元素。2. grep 函数会搜索正则表达式tom,其中i 表示关闭大小写敏感选项。当把返回值赋予标量型变量时,其结果是正则表达式匹配成功的次数。3. grep 函数会再次搜索正则表达式tom,其中i 表示关闭大小写敏感选项。当把返回值赋予数组型变量时,其结果是匹配成功的元素列表。(The Script)# Mapping a list to an expression1 list=(0x53,0x77,0x65,0x64,0x65,0x6e,012);2 words = map chr, list;3 print words;4 n = (2, 4, 6, 8);5 n = map $_ * 2 + 6, n;6 print nn;(Output)3 Sweden6 10 14 18 22解释:1. 数组list 由6 个十六进制整数和1 个八进制整数组成。2. map 函数将list 数组中的每一项映射为其对应的chr(字符)值,并返回新的列表。3. 打印新数组内容。使用chr 函数把每个数字值转换为与该ASCII 值对应的字符。4. 数组n 由一组整数组成。5. map 函数能够对n 数组中的每个元素分别匹配正则表达,并将匹配得到的新数组返回到n 中。6. 打印映射的结果。open(FH, datebook.master) or die;2 lines=;3 fields = map split(:) lines;4 foreach $field (fields)5 print $field,n;1. 打开datebook.master 文件,读取FH 文件句柄。该文件每一行内容都是以逗号隔开的字段,并以换行符结尾。2. 读取文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年济南市中考道德与法治试卷真题(含答案)
- 2025年下半年合肥信服物业管理限公司社会招聘1人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州市天台县人民检察院招考编外人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年厦门市海沧区委新闻报道组招考非在编工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年南阳市新野县事业单位招考(10人)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年南平市直某部门招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年内蒙古通辽霍林郭勒市人民政府办公室招聘1人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年内江市文化广播影视和新闻出版局文化馆招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年佛山顺德区规划学会工作人员招考易考易错模拟试题(共500题)试卷后附参考答案
- 研发创新扶持方案保证承诺书6篇
- 2025至2030中国化妆品检测行业市场深度调研及投资策略及有效策略与实施路径评估报告
- 2025年6月黑吉辽蒙高考地理真题完全解读
- 2025年连云港市中考英语试卷真题(含答案解析)
- DB51∕T 3239-2024 危险化学品安全生产数据交换规范
- 2025电化学储能电站技术监督规程第2部分:储能系统技术监督
- 坛紫菜人工育苗技术规范
- 金融机构内部审计工作手册
- T∕CECS-G-J50-01-2019-桥梁混凝土结构无损检测技术规程
- 农村征地挖矿协议书
- 青干班面试试题及答案
- T-CSEE 0394-2023 柔性光伏支架结构设计规程
评论
0/150
提交评论