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

第一个perl程序

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

#!/usr/bin/perl

print"Hello, World!\n";

敲黑板

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

  • Perl有2种运行方式,一种是交互式,另外一种是脚本。交互式是在命令行中直接执行perl代码,语法如下:

perl-e

脚本方式: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=<;

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  \n";

print"The size of names = $name_size \n";

print"\$hits[0] = $hits[0]\n";

print"\$hits[1] = $hits[1]\n";

print"\$hits[2] = $hits[2]\n";

print"\$names[0] = $names[0]\n";

print"\$names[1] = $names[1]\n";

print"\$names[2] = $names[2]\n";

print"array_str[2]= $array_str[-1] \n";   #从反向获取数组元素

  • 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 \n";

#pop @ARRARY -- 删除数组的最后一个元素

pop@names;

#shift @ARRAY -- 弹出数组第一个值,并返回该元素

$f_ele=shift@names;

print"@names\n";

print"The firsr element $f_ele\n";

#unshift @ARRAY, LIST -- 将列表放在数组前面,并返回新数组的元素个数

$num_ele=unshift(@names,"good","bad");

print"@names\n";

print"The number of element $num_ele\n";

  • 此外,可以使用函数split函数,将字符按照一定的规则切分成数组,也可以使用函数join将数组按照一定的规则组合成一个数组。

哈希

Perl中,以%开头的变量,是哈希类型。Perl中的哈希变量是一个键值对(key/value)的集合,相当于SystemVerilog中的关联数组。如果要访问哈希值,可以使用${key}格式来访问

%data=('google', 45,'runoob', 30,'taobao', 40);

print"\$data{'google'} = $data{'google'}\n";

print"\$data{'runoob'} = $data{'runoob'}\n";

print"\$data{'taobao'} = $data{'taobao'}\n";

敲黑板

  • 可以通过函数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]\n";

print"$value_arr[1]\n";

  • 函数exists来判断key是否存在,例如:exists($data{'facebook'};

  • 对于哈希,添加新的键值对时,可以采用$hash_name{‘key’}=’value’的方式;但是删除哈希时,需要使用delete函数,语法delete $hash_name{‘key’}。

今天关于Perl的基础知识,就介绍到这里,下期见。拜了个拜

  

END

点个“在看”表示朕 已阅

perl删除文件_Perl小知识语法重点和数据类型相关推荐

  1. msbuild 语法_用于删除文件的MSBuild Task语法

    用于删除文件的MSBuild Task语法 我正在尝试编写一个MSBuild任务,该任务将从生产构建脚本中bin文件夹中的Obj目录和PDB删除,并且似乎无法使其正常运行. 有没有人提供执行此操作或类 ...

  2. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序

    删除文不需要的文件或者资料,是日常工作中必定会遇到了. 各种的杀毒软件或者防护软件都具备删除文件的功能,例如360.腾讯电脑管家.这些操作起来其实也不是太麻烦! 不过呢!今天来和大家分享一个更简单的方 ...

  3. syswow64删除文件_syswow64,小编教你syswow64是什么文件夹

    有很多用户对有些文件夹很好奇,比如在C盘中有一个名为syswow64的文件夹,该文件夹占了不少的空间了,为此,用户提出syswow64是什么文件夹,可不可以删除的疑问,下面,小编给大伙聊聊syswow ...

  4. 不小心删除文件夹怎么恢复,怎么恢复误删文件?

    不小心删除文件夹怎么恢复?居家办公作息不稳定,导致我最近上班的时候总是犯错,比如保存或者查看某些本周要用的文件时,一个不留神就将其删除了.这些文件数据都是经过一定时间的整理才做出来的,重新做的话很浪费 ...

  5. linux下的删除文件命令,Linux下删除文件命令

    在linux中删除文件与文件夹我们可以直接使用rm就可以删除了,彻底删除文件或文件夹我们可以使用shred命令来完成,接下来是小编为大家收集的Linux下删除文件命令,希望能帮到大家. Linux下删 ...

  6. u盘复制文件第二台计算机无文件夹,电脑上的文件不能复制到U盘,U盘不能创建文件夹及删除文件...

    电脑上的文件不能复制到U盘,U盘不能创建文件夹及删除文件 计算机基础知识    知识宝库    2013-8-3    6606    0评论 最好查一下电脑被设置的什么保护,该怎样解开 你确认一下, ...

  7. Linux下删除文件命令

    在linux中删除文件与文件夹我们可以直接使用rm就可以删除了,彻底删除文件或文件夹我们可以使用shred命令来完成,接下来是小编为大家收集的Linux下删除文件命令,希望能帮到大家. Linux下删 ...

  8. linux-shell命令之rm(remove)【删除文件或目录】

    功能说明:删除文件或目录. 语法介绍:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r ...

  9. linux删除文件里夹命令,Linux删除文件(夹)、创建文件(夹)命令是什么

    Linux删除文件(夹).创建文件(夹)命令是什么?在Linux系统中删除文件,很多用户都惯用rmdir命令,因为Linux没有回收站功能,所以笔者建议用户使用rm-rf命令,具体用法可以按照以下命令 ...

最新文章

  1. DeFi 史上最大盗窃案:一个漏洞盗走价值 6 亿美元资产?现已归还近一半
  2. ERP项目实施的原则
  3. Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划
  4. Git分支操作命令:删除与恢复
  5. [BZOJ4033][HAOI2015]树上染色(树形DP)
  6. 数据结构(java语言描述)顺序栈的使用
  7. Springboot(2.0.0.RELEASE)+spark(2.1.0)框架整合到jar包成功发布(原创)!!!
  8. Zipkin-1.19.0学习系列13: Brave-Web-Filter的filter机制分析
  9. Java学习之JDBC(1)
  10. 5款好用的项目管理软件推荐
  11. 修改scrollbars的样式
  12. 复旦计算机对口,2019年长宁区公办初中划片电脑派位对口入学方式
  13. 数理逻辑习题集(3)
  14. 解决vue项目在浏览器中打开后,#后面的链接被截取的问题
  15. 将距离度量学习应用于购物问题
  16. 12306验证图片集合。
  17. android中录音断点播放,Android实现暂停--继续录音(AudioRecord)
  18. 【C语言】scanf语句里关于%c的问题
  19. 基于CC2530的zIgbee传感器无线数据采集系统开发(部分关键源码)
  20. 无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)

热门文章

  1. 深入理解JavaScript中的属性和特性
  2. List特有迭代器--ListIterator的特殊功能
  3. (转)OS X Mountain Lion 系统配置 Apache+Mysql+PHP 详细教程
  4. 程序常用配置文件格式介绍
  5. Golang sync.Mutex 与 sync.RWMutex
  6. C++ IO 流简介
  7. 【JZOJ3347】树的难题
  8. String 创建对象问题
  9. 企业级应用与互联网应用的区别?
  10. XidianOJ 1175: count