• 3、perl进阶


    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 $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> " 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 / /,$_,3  #只对前3列切割    split /pattern/,expr,limit  split /pattern/,expr  split /pattern/

      jion " ",@a              jion expr,list

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

  • 相关阅读:
    springboot的自动配置
    tomcat8.5和redis实现session共享
    GitHub提交时出错,提示需要验证邮箱verify email
    vue3可拖拽容器宽度
    vue解决iOS10-11、vant部分版本ImagePreview点击预览图片无法缩放回去的问题
    使用vue自定义指令限制input输入内容为正整数
    判断当前时间是否超出预约(配送)时间
    vue选择地址字母联动
    手机号码中间四位*号隐藏(别的方法有的机型不适配)
    前端面试题
  • 原文地址:https://www.cnblogs.com/renping/p/7061950.html
Copyright © 2020-2023  润新知