1、条件判断与循环结构(if (unless)   while(until)   for   foreach   next last redo)

if (unless)  

  关系运算符:

    数字关系运算符(>,>=,<,<=,==,!=)   

    字符串关系运算符(gt,ge,lt,le,eq,ne)

    数字中0是假,其余是真;字符中空字符串("")和字符串("0")是假,其余是真;未定义的undef是假。

    例子:0.00是假,是0的另一种写法;"0.00"是真,它是字符串;"00"是真

  逻辑运算符

    &&(and)  ||(or)  !(not)

循环:

  while(until):

    最简单的一种循环是while,只要表达式为真,就重复执行代码块。

    perl -le '$i = 1;while($i <=10){print $i;$i+=2}'    perl -le '%hash = (1..12);while(($a,$b)=each(%hash)){print "$a\t$b"}'

  for:

    for(initialization;test;increase) perl -le 'for($i=1;$i<=10;$i+=2){print $i}'

  foreach:

    foreach与for是可以互换的,()内有两个分号就是for循环,没有分号就是foreach循环。

    perl -le 'for(1..10){print}'

循环控制:

    next:跳过这次循环,进入下次循环

    last:终止这一层次的循环

    redo:将3控制返回到当前循环块的顶端,而不经过任何条件的测试,也进入下次循环的迭代。

    三个都是在本block中其作用,要想跳出更高层次的block可以用标签。

2、变量的声明(my local our)

  my:把名字和值限于本层模块或者函数可以看到,高一层或者低一层都看不到。

     perl -le 'my $a = 12;{my $a = 34;print $a;}print $a'    #结果是12   34

  our:限于一定范围,其实就是声明一个“全局变量“,虽然是在某个模块和函数里面定义的,但是外面也可以访问。

     perl -le '{our $a = 34;print $a;}print $a'    perl -le '{my $a = 34;print $a;}print $a'

  local:本层以及本层一下的函数可以看到本层的变量,但是本层上一层的不可以。

3、文件的读取

  1):$a = <STDIN>;chomp $a;  或者chomp($a = <STDIN>)    @a = <STDIN>

    perl -le 'print "please input your number:";chomp($a = <STDIN>);print ++$a'

  2):perl -le 'while(<>){chomp;print $_}' file1.txt

  3):perl -le 'open IN,"./infile1.txt";open OUT,">outfile";while(<IN>){chomp;print OUT $_};close IN;close OUt;'

  4):perl -le 'open IN,$ARGV[0];open OUT,">$ARGV[1]";while(<IN>){chomp;print OUT $_};close IN;close OUt;'    infile outfile

4、处理错误

  1):die 触发错误时给出错误信息

  2):use warning 给出警告信息(局部写法)  #!/usr/bin/perl -w(全局写法)

  3):use strict 编译指令,对语法要求严格,需要对变量适应范围作出声明。

  #!/usrbin/perl -w

  use strict;

  die "perl $0 <input> <outfile>\n" unless @ARGV==2;

  open IN,$ARGV[0] || die;

  open OUT,">$ARGV[1]" || die;

  while(<IN>){

    chomp;

    print OUT $_

    };

  close IN;

  close OUt;'

5、文件j夹的操作

  perl -le 'my $a= "./";opendir IN, $a || die;while(my $filename = readdir IN){chomp;print $filename;};closedir IN;'    #等同于ls

6、文本处理函数(split,join)

  split /\t/,$_,3  #只对前3列切割    split /pattern/,expr,limit  split /pattern/,expr  split /pattern/

  jion "\t",@a              jion expr,list

  print "@a"  print join "\t". @a[1..3]  #更改数组输出格式

3、perl进阶的更多相关文章

  1. 精通Perl(第2版)

    精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著   王兴宇 刘宸宇 译 ISBN 978 ...

  2. OTRS 二次开发笔记

    公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...

  3. idea 插件的使用 进阶篇

    CSDN 2016博客之星评选结果公布    [系列直播]零基础学习微信小程序!      "我的2016"主题征文活动   博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...

  4. [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门

    [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...

  5. 2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

  6. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  7. Perl系列文章

    0.Perl书籍推荐 Perl书籍下载 密码:kkqx 下面是一些我学习Perl过程中读过完整的或部分章节的觉得好的书. 入门级别1:<Perl语言入门>即小骆驼 入门级别2:<In ...

  8. GO语言的进阶之路-初探GO语言

    GO语言的进阶之路-初探GO语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么我们需要一门新语言 Go语言官方自称,之所以开发Go 语言,是因为“近10年来开发程序之难 ...

  9. python 正则进阶

    1.group 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能.用()表示的就是要提取的分组(Group).比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的 ...

随机推荐

  1. STM32 MCO时钟输出配置实验

    STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出. 操作流程: 1).设置PA.8为复用AF模式. RCC_AHB1PeriphClockC ...

  2. 剑指offer——树中两个节点的最低公共祖先

    代码来源与<剑指offer> 得到从根节点开始到输入的两个结点的两条,需要遍历两次树,每遍历一次的时间复杂度是O(n),得到的两条路径的长度在最差情况时是O(n),通常情况下两条路径的长度 ...

  3. java入门了解11

    1.码表 (一)码表种类 ASCII:美国标准信息交换码,用一个字节的7位可以表示 ISO8859-1:拉丁码表.欧洲码表,用一个字节的8位表示,对ASCII没用到空间补充了自己特有的 GB2312: ...

  4. python中字符串使用需要注意的地方

    1. r''的使用 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 2. u''的使用 引号之前加上字母u时,python会将 ...

  5. Victor/ArrayList/LinkedList/Stack/CopyOnWriteArrayList 区别

    Victor:采用数组的方式存储数据,与ArrayList相同,线程安全.性能比ArrayList差 ArrayList:采用数据的方式存储数据,线程不安全.ArrayList使用数组来存储数据,使用 ...

  6. SetOperations

    无序集合,add的顺序不是存储顺序 1.add(K key, V value) 2.difference(K key, otherK[s]) :差集,返回Set 3.differenceAndStor ...

  7. linux命令学习笔记(35):ln 命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在 不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要 ...

  8. OpenCV-Python 霍夫直线检测-HoughLinesP函数参数

    cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段. cv2.HoughLinesP()函数原型: HoughLinesP(image, ...

  9. OpenCV——旋转模糊 (二)

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  10. 【leetcode刷题笔记】ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...