Perl小知识--语法重点和数据类型
Posted 数字IC验证
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl小知识--语法重点和数据类型相关的知识,希望对你有一定的参考价值。
第一个perl程序
下面来看看第一个perl程序 -- “Hello World”依旧,文件名为hello.pl。
#!/usr/bin/perl print"Hello, World! "; |
敲黑板
为了增加文件的可识别度,一般将p或者pl作为perl脚本名的后缀。
Perl有2种运行方式,一种是交互式,另外一种是脚本。交互式是在命令行中直接执行perl代码,语法如下:
perl-e<code> |
脚本方式:perl name.pl 或者./name.pl
代码中 /usr/bin/perl是 perl 解释器的路径。在执行该脚本前要先确保文件有可执行权限,我们可以先将文件权限修改为 0755 :
$ chmod 0755 hello.pl $ ./hello.pl Hello, world # 输出结果 |
因为Perl语法的随意性,导致程序难以维护,建议的解决方案是在程序中使用use strict;以及use warnings;,并统一代码风格,使用库,而不是自己使用"硬编码"。
在perl解释器路径的后面,可以加上-w,可以显示程序中出现的一些警告,以便于修改或者debug程序,例如:
#!/usr/bin/perl -w |
Perl语句每条以封号(;)结束;
除了Perl解释器语句外,以#字符开头的语句是注释;多行注释,以=str(字符或者单词)开头和=cut(必须是=cut)结束;
Perl 中输出字符串可以使用单引号或双引号,二者区别是:双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出;
Perl中的here文档:使用=<<标识符; .… 标识符 将一个单行或者多行的内容赋值给一个变量,例如;
#here doc $here_doc=<<"EOP"; This is a here document, using double quote ! EOP |
Perl数据类型
Perl有三种基本的数据类型:标量($),数组(@)和哈希(%)。
标量
以$开头的变量,表示标量:
$age= 20; $name="Zhang"; $salary= 10204; |
数组
以@开头的变量,是数组变量,索引从0开始,例如:@arr=(1,2,3);
此外,Perl还提供了按序列输出的数组形式,例如:@array_num=(1..10); 或者@array_str=(a..z);
敲黑板
要访问数组的变量,可以使用美元符号($)+变量名[下标],并指定下标来访问,实例如下所示:
@ages=(25, 30, 40); @names=("google","runoob","taobao");
@copy_name=@names; $array_size=@array; #数组元素个数,值为5 $array_max_size=$#array;#数组元素下标最大值,值为4
print"@copy_name "; print"The size of names = $name_size "; print"$hits[0] = $hits[0] "; print"$hits[1] = $hits[1] "; print"$hits[2] = $hits[2] "; print"$names[0] = $names[0] "; print"$names[1] = $names[1] "; print"$names[2] = $names[2] "; print"array_str[2]= $array_str[-1] "; #从反向获取数组元素 |
Perl中,可以根据变量上下文来决定变量的类型,上下文是由等号的左边变量类型决定的。例如上述code中,语句 $name_size=@names 执行的结果就是返回数组@names的元素个数。
访问数组元素时,下标为正数,表示从正向开始,0表示第一个数组元素,1表示第2个数组元素。下标为负数,表示从反向开始。
数组长度返回的是数组物理大小,而不是元素的个数。
可以取出数组部分元素作为一个新数组,例如:@sites2 = @sites[3,4,5];
可以使用函数来添加和删除数组元素:
#push @ARRAY, LIST -- 将列表的值放到数组的末尾 push(@names,"guomei"); push(@names,"pingduoduo","tianmao"); print"@names ";
#pop @ARRARY -- 删除数组的最后一个元素 pop@names;
#shift @ARRAY -- 弹出数组第一个值,并返回该元素 $f_ele=shift@names; print"@names "; print"The firsr element $f_ele ";
#unshift @ARRAY, LIST -- 将列表放在数组前面,并返回新数组的元素个数 $num_ele=unshift(@names,"good","bad"); print"@names "; print"The number of element $num_ele "; |
此外,可以使用函数split函数,将字符按照一定的规则切分成数组,也可以使用函数join将数组按照一定的规则组合成一个数组。
哈希
Perl中,以%开头的变量,是哈希类型。Perl中的哈希变量是一个键值对(key/value)的集合,相当于SystemVerilog中的关联数组。如果要访问哈希值,可以使用${key}格式来访问:
%data=('google', 45,'runoob', 30,'taobao', 40); print"$data{'google'} = $data{'google'} "; print"$data{'runoob'} = $data{'runoob'} "; print"$data{'taobao'} = $data{'taobao'} "; |
敲黑板
可以通过函数keys读取哈希所有的键,然后用一个数组来接收哈希的键,形成一个数组;
同理,可以通过函数values来读取哈希的所有值,存放在一个数组中。
#!/usr/bin/perl %data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com'); @key_arr = keys%data; @value_arr = values%data; print"$key_arr[0] "; print"$value_arr[1] "; |
函数exists来判断key是否存在,例如:exists($data{'facebook'};
对于哈希,添加新的键值对时,可以采用$hash_name{‘key’}=’value’的方式;但是删除哈希时,需要使用delete函数,语法delete $hash_name{‘key’}。
今天关于Perl的基础知识,就介绍到这里,下期见。拜了个拜
END
点个“在看”表示朕 已阅
以上是关于Perl小知识--语法重点和数据类型的主要内容,如果未能解决你的问题,请参考以下文章