【Linux/脚本/芯片学习】Perl学习

Perl学习:文本处理脚本语言及其与Python、TCL对比,
本文介绍了Perl,一种用于文本处理的脚本语言,与Python和TCL进行了比较,强调了Perl的正则表达式优势和库的丰富性,同时提到了其在编程风格和适用场景的局限性。

Title:Perl学习

  • 个人学习策略

    主用python.

    看懂perl 和 tcl 即可。

  • 之前的存货
    开始搬砖后,整理 ”网络发布版笔记“ 的心思寡淡了好多,可能就是被工作榨干的原因8…
    但今天至少得赶个1024节日… ( ̄▽ ̄)"~

1 介绍

  • 是什么

    Perl (Practical Extraction and Report Language),实用报表提取语言。

    偏向文本处理的脚本语言。

  • 脚本的作用

    实现一些自动化工作:如写个tcl,由当前系统时间自动生成唯一的版本号;设计一个脚本进行数据格式转换;用脚本实现个人HDL编码习惯的module模板;

    脚本语言是文本文件,解释执行

  • 安装

    perl的编译器有 ActiveStatePerl 和 Strawberry Perl,前者轻量级,后者包含些第三方库CPAN,自己定,以下以后者为例;

    1. 下载语言包位置:Perl Download

    2. 检查系统环境变量path是否更新:

      cmd中输入:perl -v

      有显示则成功,否则自己加环境变量到path中:

      把perl 安装地址 .\perl\bin 加到path环境变量里即可.

      (重新验证得重开cmd)

  • 各种脚本语言的对比:perl、tcl、python

    大部分Linux都自带了这三种脚本语言。

    • 正则表达式

      三个都支持正则:但perl支持最好最简洁、py兼容Perl的标准但要re库、tcl用的是另一套标准。

    • Python

      语言风格:类似matlab;

      优势:写一些开发用个人的小工具,有更丰富、成熟的库而更有优势

      缺陷:EDA工具支持性不好;分为 2.7 和 3.x 俩不兼容的版本,有点麻烦;

      后缀.py

    • Tcl

      语言风格:类似C库,被C调用很方便;

      优势:EDA支持性好;

      EDA工具内置的console都集成、支持 tcl,如:ModelSim、Vivado、Quartus;

      故tcl能更好地拓展EDA工具的功能和使用。

      缺陷:扩展库不够多而且老;

      后缀.tcl

    • Perl

      语言风格:类似shell的拓展;

      优势:深度集成正则,故很适合文本处理;优势之一是丰富的第三方库(CPAN)

      缺陷:库的质量难以保证;对文本外的开发没啥优势;且py也支持perl的正则标准,够用了。

      perl的缺陷是更偏向文本处理、库的稳定性也不够。

      后缀.pl.plx

2 使用/运行

  • 关键文本头

    #!自己的perl目录/bin/perl -w -w表示开启warning.

    不知道目录,linux下可用 which perl查;

  • Linux下的系统指令和Windows下不同,Windows下是dos指令;

  • 运行

    执行文件

    perl 文件名.pl

    cmd中执行单行:

    perl -e 语句

3 语法(看完后查阅用)

3.1 叙述性语法

碎片语言风格

  1. 行尾要有分号 ;

  2. 不关心空白;

  3. 弱语言类型,类似makefile.

  4. 语句块的{} 不能省略,不像C的单句可省。

  5. 运算符同C,

    多了个乘幂**逻辑非用的是not;逻辑或、逻辑且,支持and/or也支持&& / ||

    支持 +=++ 这类的使用;

变量定义和使用

  • 定义

    标量$;后面正则元字符里还有符号$,勿混淆!

    • 未定义的变量,直接用$,那自然是空(不是空格哈).

    数组@

    哈希%

  • 使用

    使用都是用$!直接加符号即可,不用括号.

    e.g. 定义和使用都是 $var ;别和makefile弄混了—— makefile使用需要有 {},perl不用.

  • 数值的使用

    默认把整数按浮点数存;

    $a = 666;
    $a = 666.66 + 6.6e+6 -0.66;
    
  • 数组

    #定义
    @array = (1,2,3);
    @str = ( "1", "2", "3");
    #使用
    print $str[0];
    
    # 数组复制
    @copy = @array;		
    # 获得数组个数
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值