zoukankan      html  css  js  c++  java
  • 像学历史课本一样学习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编程感兴趣,也可以参考这个豆列
  • 相关阅读:
    【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
    【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
    【leetcode】236. Lowest Common Ancestor of a Binary Tree
    【leetcode】235. Lowest Common Ancestor of a Binary Search Tree
    【leetcode】352. Data Stream as Disjoint Intervals
    【leetcode】897. Increasing Order Search Tree
    【leetcode】900. RLE Iterator
    BEC listen and translation exercise 26
    BEC listen and translation exercise 25
    BEC listen and translation exercise 24
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/1736436.html
Copyright © 2011-2022 走看看