zoukankan      html  css  js  c++  java
  • 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”



  • 相关阅读:
    20200226 Java IO流——廖雪峰
    20200225 Java 多线程(2)-廖雪峰
    20200225 Java 多线程(1)-廖雪峰
    20200224 尚硅谷ElasticSearch【归档】
    20200224 一 概述
    20200222 尚硅谷Dubbo【归档】
    20200222 四、dubbo原理
    Improved robustness of reinforcement learning policies upon conversion to spiking neuronal network platforms applied to Atari Breakout game
    Reinforcement learning in populations of spiking neurons
    Solving the Distal Reward Problem through Linkage of STDP and Dopamine Signaling
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3395236.html
Copyright © 2011-2022 走看看