• Perl初识笔记


    前两天项目中遇到了一个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! ”) if ($in eq “yes”);
      终端输入yes,结果没有输出,这是因为$in末尾有换行符,可以用模式匹配删除掉,如下:
      $in = <STDIN>;
      $in =~ s/[ ]//;
      print (“Hello world! ”) 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+ $//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”



  • 相关阅读:
    【LEETCODE】58、数组分类,适中级别,题目:238、78、287
    【LEETCODE】57、数组分类,适中级别,题目:969、442、695
    【LEETCODE】56、数组分类,适中级别,题目:62、63、1035
    【LEETCODE】55、数组分类,适中级别,题目:79、611、950
    【LEETCODE】54、数组分类,简单级别,题目:605、532
    【LEETCODE】53、数组分类,简单级别,题目:989、674、1018、724、840、747
    【LEETCODE】52、数组分类,简单级别,题目:717,661,746,628,643,849
    【LEETCODE】51、数组分类,简单级别,题目:581,830,1010,665
    【LEETCODE】50、数组分类,简单级别,题目:888,1013,896,485,448,697
    【LEETCODE】49、数组分类,简单级别,题目:566,1089
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3395236.html
Copyright © 2020-2023  润新知