• 像学历史课本一样学习Perl


        第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言。当然,带我入门的还是那本赫赫有名的The Llama  Book, 即<Learning Perl> 第四版

        然而,由于主要是为了使用,所以只是快餐式的学习,并没有系统的去了解Perl,这几年来三三两两的也写了不少Perl脚本,但是对于Perl那些天书式的符号,还是颇有些头疼,经常,写到一半就得停下来去查一下某个奇怪的语法,或者奇特的符号,很是打断思路。社区对Perl有两种比较中肯的评价:一是Perl是Write-Only的编程语言;二是Perl学起来难,但一旦学会了,用起来就相当方便。 我想这两点其实都是基于一个事实,就是Perl里有太多奇怪的符号,而只有你对这些符号了若指掌了,你才能发挥Perl的最大效率 --- 所以,学习Perl就要像学习历史课本一样,靠的,就是背诵!

         根据这两年的经验,整理了一下自己觉得用的比较多的一些符号,用法,以及函数,库之类的,这些都是很基本的,但是“背熟”了,对提高效率会很有帮助。

    数据操作

    • $ - 声明与引用用一个scalar的变量
    • @ - 声明与引用一个list,但是当访问一个list的成员时,需使用$ListName[index]
    • % - 声明与引用一个hash表,但是当访问一个hash的成员时,需要使用$HashName{key}

    特殊变量

    • $0 - 当前运行脚本的文件名
    • @ARGV - 当前运行脚本的命令行参数列表
    • $_ - 默认变量,如循环中的当前变量
    • @_ - 函数的输入参数列表
    • %ENV - 系统的环境变量
    • @INC - Perl的Include路径列表,我们可以往该列表中添加我们自己的目录来方便引用自定义的库
    • $! - 当前系统提示,错误信息
    • $^O - 操作系统的名字
    • STDIN,STDOUT,STDERR - 输入输出的默认句柄,可以作一定的自定义
    • => - 声明一个hash时可以用来明确的表示出key=>value的对应关系
    • $^I- 指定备份的文件的后缀名,如此,被修改的文件将会自动以该后缀名保存一个副本

    特殊用法

    • &Sub - 调用一个函数,虽然Perl有些规则让你在某些时候可以省略这里的&符号,但是处于一致性考虑,所以自定义的函数的调用,我一律采用此种方式。
    • $# - 用来取得模个数组的最大index, 一般情况下,也可以用-1来表示最后一个元素的index的
    • qw() - 快速声明一个字符串数组,可以省略那些烦人的引号

    正则表达式

    • $ < digit > - 获取被括号捕获的匹配
    • $`, $&, $' - 获取匹配的字符串,以及其前后两个部分
    • ^,$ - 字符串的始末位置,用作定位

    常用函数

    • pop, push, shift, unshift, reverse - list的操作函数
    • keys,values, exists, each, delete - hash的操作函数
    • chomp, split, join, index, substr, sort - 字符串操作函数
    • sprintf,printf, print - 格式化输出函数
    • system, exec, `` - 系统命令调用函数
    • glob, unlink, mkdir, rmdir, rename,chmod,chown, open, close, opendir, closedir - 文件系统操作函数
    • stat, lstat,localtime,gmtime,utime - 文档属性,时间相关函数
    • hex, oct - 二进制,八进制,十六进制数转化成十进制的函数
    • grep, map - list高级操作函数

    • 这些函数的详细介绍,都可以通过命令:
      perldoc -f functionname
      查到

    常用库

    • File::Basename - 根据path获取文件名或者文件路径
    • File::Spec - 根据文件名与路径组合成全路经
    • File::Find - 递归遍历某个目录下所有文件
    • XML::Simple - 以一个复杂的结构来表示xml文件,使用起来相当方便
    • Time::HiRes - 经常用来计算一个操作所耗费的时间
    • Getopt::Long - 当脚本需要复杂的输入参数与选项时用到
    • Cwd - 拿到当前工作目录
    • IO::File - 文件操作
    • Win32 - 当需要调用一些Windows API时我会用它

    • 当然,这些库的详细介绍都可以在CPAN看到。
    这篇文章也会作为我Perl编程的一个参考,会一直更新。 另外,您要是对Perl编程感兴趣,也可以参考这个豆列
  • 相关阅读:
    [].copyWithin.call({length:5,3:1},0,3)
    url、 src 和href 标签的区别
    http请求方法(GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT)
    windows环境下配置webpack
    typeof作用
    行内块之间存在间隙
    “DllRegisterServer的调用失败”问题解决办法
    SQL Server集群服务器的优缺点
    UTF8转成GB2312乱码问题解决思路
    什么是RFID技术
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/1736436.html
Copyright © 2020-2023  润新知