Perl小知识--语法重点和数据类型

Posted 数字IC验证

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl小知识--语法重点和数据类型相关的知识,希望对你有一定的参考价值。


Hello,大家好,我是小舍,后续有我为大家介绍 Perl 编程相关知识,以及Perl在数字IC验证中的应用。
Perl的全称是Practical Extractionand Report Language,一般翻译为"实用报表提取语言",可见Perl的优势是文本处理。好了,废话不多说,直接来干货吧 Perl小知识--语法重点和数据类型 Perl小知识--语法重点和数据类型


第一个perl程序

        下面来看看第一个perl程序 -- Hello World”依旧,文件名为hello.pl

#!/usr/bin/perl

print"Hello, World! ";

敲黑板

  • 为了增加文件的可识别度,一般将p或者pl作为perl脚本名的后缀

  • Perl2种运行方式,一种是交互式,另外一种是脚本。交互式是在命令行中直接执行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语句每条以封号(;)结束;

  • 除了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的基础知识,就介绍到这里,下期见。拜了个拜Perl小知识--语法重点和数据类型Perl小知识--语法重点和数据类型


Perl小知识--语法重点和数据类型 Perl小知识--语法重点和数据类型  



END




                                                                    

                                                                 点个“在看”表示朕 已阅  

                                                                   

                                                                                                                          


以上是关于Perl小知识--语法重点和数据类型的主要内容,如果未能解决你的问题,请参考以下文章

9.Python基础语法数据类型转换

杂碎小知识——基础阶段

C++基础语法梳理:位域以及 union 联合!小知识分享

Perl_实用报表提取语言

Java知识点

(10.23)Java小知识!