前两天项目中遇到了一个Perl脚本程序,需要读懂该程序,由于以前重来没有用过Perl语言,所以没法搞定。今天抽空把该语言的基础看了一遍,基本上内读懂Perl脚本程序了吧。真是如网上很多分享的经验所说,第一:会一门语言后,学习其他的语言也就容易了,所有的语言包含的内容都差不多,只要熟悉一下该语言的语法就OK了;第二:会一门语言的有经验的开发者,跟本没有必要花大量的时间把一门新语言重头读到尾来学习他,看看基础就可以用了,用的过程中不明白的再去查阅手册或资料。

网上不少人说Perl语言受关注度越来越低,在服务器端慢慢的被PHP取代,但是作为系统脚本语言还是有他的特点的,我觉得最主要的是:强大的正则表达式和模式匹配功能,在sed和awk中也用到了类似的语法。

下面是我学习中记下的一些乱七八糟的东西,没有什么参考价值,就当自己学习过程中熟悉用的吧。

  • 字符串比较与数值比较

字符串比较用:lt,gt,eq,le,ge,ne,cmp(比较,返回1,0,or-1)。数值比较用:<, >,==,<=, >=,!=,<=>(比较,返回1,0,or-1)。

需要注意的是,不能用数值比较符号去比较字符串,因为用数值符号比较时,会先把左右操作数转换为数值类型,非数字字符串转换结果为0。所以,例如:if (“abc”== “yes”) 判断结果为真!

  • 去掉标准输入的行尾换行符
    例如:
    $in = <STDIN>;
    print (“Hello world!\n”) if ($in eq “yes”);
    终端输入yes,结果没有输出,这是因为$in末尾有换行符,可以用模式匹配删除掉,如下:
    $in = <STDIN>;
    $in =~ s/[\r\n]//;
    print (“Hello world!\n”) if ($in eq “yes”);

  • 普通变量“$”开头,数组变量“@”开头,关联数组“%”开头,另外访问数组或者关联数组的单个元素时以“$”开头。数组元素访问用“[]”,关联数组元素访问用“{}”,例如:
    数组:@arr =(1,2,3),访问第三个元素:$arr[2];
    关联数组:@fruit =(“apple”, 1, “banana”, 2, “orange”, 12),获取元素或修改元素值:$dict{“bananas”},$dict{“bananas”}=1。
    上面的关联数组初始化也可以这样:@fruit = (“apple”=>1, “banana”=>2, “orange”=>12)。
  • 使用正则表达式进行模式匹配时,$&为上一次匹配成功的字符串。

  • 去掉行首或行尾的空白符(包括换行符)的正则表达式写法:
    $inputline = <STDIN>;
    $inputline =~ s/^\s+|\s+\n$//g;
  • 注意替换操作符s/string1/string2/和翻译操作符tr/string1/string2/的区别,前者查找string1并替换成string2,后者查找string1中的第一个字符替换为string2中的第一个字符,查找string1中的第二个字符替换为string2中的第二个字符,以此类推,也就是tr操作符不把string1和string2当做字符串而是一个个独立的字符。下面的例子显示了二者的区别。
    $str = “abc123cba”;
    $str =~ s/abc/xyz/;  #结果str为:”xyz123cba”
    $str = “abc123cba”;
    $str =~ tr/abc/xyz/;  #结果str为:”xyz123zyx”

  • 字符串联结和重复操作符
    联接: .
    重复:x (注意,这里是小写字母x)
    联接且赋值(类似+=): .=
    例子:
    $newstring = "hello" . "world";       #结果为”helloworld”
    $newstring = "t" x 5;         #结果为”ttttt”
    $a = "be";
    $a .= "witched";        #结果为”bewitched”

Perl初识笔记的更多相关文章

  1. Perl 学习笔记-列表和数组

    笔记来自<<Perl语言入门第5版>> 1. Perl中列表指标量的有序集合,数组则是存储列表的变量, 这两个术语经常混用,不过更精确地说,列表指数据,而数组指变量.数组的表示 ...

  2. Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...

  3. perl学习笔记

    一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl ...

  4. perl学习笔记(4)——动态加载

    在写perl的时候,如果要应用到各种平台的话,比如linux 和windows,会遇到各种问题,有时就是要根据系统类型来加载各种库,之前写的就是这样的, if($^O eq 'linux'){ use ...

  5. perl学习笔记(3)—— 坑

    (1)用perl来ls一个目录: 写perl的时候,经常要调用到系统命令,perl有很多等价的函数可以用,但是,不小心任性了,就想用system来实现了,好吧,来个ls把,列出指定的一个目录,直接上代 ...

  6. perl学习笔记(2)

    1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7. ...

  7. perl 学习笔记

    一:基础 1:安装perl      centos: yum -y install perl       官网:https://www.perl.org/      升级到5.22:先下载,执行./i ...

  8. 【Perl学习笔记】2. perl中的bless理解

    bless有两个参数:对象的引用.类的名称. 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键. 所谓bless就是把 类型信息 赋予 实例变量. 程序包括5个文件:person.p ...

  9. 【Perl学习笔记】1.perl的ref 函数

    perl有引用的概念:一组数据实际上是另一组数据的引用.这些引用称为指针,第一组数据中存放的是第二组数据的头地址.引用的方式被用得相当普遍,特别是在面向对象的模块.函数的参数传递等常见.但perl对每 ...

随机推荐

  1. UVa 537 Artificial Intelligence?

    题目大意:输入一个字符串,根据物理公式P=U*I,已知其中两个量,求第三个量,结果保留两位小数.   Artificial Intelligence?  Physics teachers in hig ...

  2. UVa 10420 List of Conquests

    题意就是有N个pl妹子,然后每行第一个单词是妹子的国籍,后面是妹子的名字. 你的任务就是统计相同国籍妹子的个数,然后按字母表顺序输出. 我首先把所有的国籍都读入,然后用qsort()按字母表顺序排序. ...

  3. 相对定位、绝对定位在IE6的问题

    注意: 关于绝对定位,在IE6下定位元素的父级宽高都为奇数那么在IE6下定位元素的right,bottom都有一像素的偏差(left,top无偏差).因此应尽量使用偶数. 关于绝对定位,在IE6下父级 ...

  4. 【转】为eclipse安装python、shell开发环境和SVN插件

    原文网址:http://www.crazyant.net/1185.html eclipse是一个非常好用的IDE,通常来说我们都用eclipse来开发JAVA程序,为了让开发python.shell ...

  5. 如何使用 Java 中的数组

    Java 中操作数组只需要四个步骤: 1. 声明数组 语法:  数据类型[ ] 数组名: 或者   数据类型 数组名[ ]: 其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简单地说,就是指 ...

  6. GUID转换成16位字符串或19位数据(确保唯一)

    // <summary> /// 根据GUID获取16位的唯一字符串 /// </summary> /// <param name=\"guid\"& ...

  7. SpringMvc+jquery easyui模块开发7步骤

    搞了一段java的开发,总结出模块开发经验: SpringMvc+jquery easyui模块开发7步骤:1) 数据表(table):                定义表结构并创建数据表t_use ...

  8. WebAPI初探

    由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...

  9. Android 中像素px和dp的转化

    在Android的布局文件中,往往使用dp作为控件的宽度和高度尺寸,但是在Java代码中,调用getWidth()方法获得的尺寸单位却是像素px,这两个单位有明显的区别:dp和屏幕的密度有关,而px与 ...

  10. OSX 10.10安装教程。

    现在苹果已经放出了OS X 10.9 Mavericks第一个开发者预览版,从Mac App Store中获得的安装程序,可以在10.8的系统中直接进行升级,原有文件都会保留.但是要想制作成一个10. ...