• perl 简明教程 perl教程集合


    一、perl环境配置

    1.获取perl
      Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。你可以在Internet用匿名FTP免费得到它,如ftp://prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz

    2.安装过程为:
          (1)解压:
          $gunzip perl-5.004.tar.gz
          $tar xvf -       (2)编译:
          $make makefile
          (3)放置:
          将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:
          $copy /usr/local/bin/perl

    3.运行
      用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x 就可以执行了:$./。如果系统提示:"/usr/local/bin/perl not found",则说明你没有安装成功,请重新安装。
    注:你的程序的第一行必须为#!/usr/local/bin/perl(perl所在位置)。

    4注释:
          注释的方法为在语句的开头用字符#,如:
          # this line is a comment
          注:建议经常使用注释使你的程序易读,这是好的编程习惯。

    二、常量、变量等问题

    1.单引号与双引号
      双引号内的字符串中支持简单变量替换  如:$text = "This text contains the number $number.";
      双引号内的字符串中支持转义字符
      单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符。
    2.重复和联结
    重复:print "t" x 5  (会输出5个t,注意:其中x为英文字母小写x)
    联结:$a.="bc"    (相当于连等于)
    3.简单变量、数组、列表
    简单变量:用$声明,如:$a="hello";
    数组:用@声明,如:@arr=('a','b','c');
    列表:列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:()

    三、文件操作

    1.打开文件:如open (MYFILE, "file1") || die ("Could not open file");MYFILE为声明的文件句柄,file1为文件名/文件路径,整行代码意为:如果打开失败,则输出"Could not open file";
       关闭文件:当文件操作完毕后,用close(MYFILE); 关闭文件。
    2.读文件
      语句$line = ;从文件中读取一行数据存储到简单变量$line中并把文件指针向后移动一行。为标准输入文件,通常为键盘输入,不需要打开。
      语句@array = ;把文件的全部内容读入数组@array,文件的每一行(含回车符)为@array的一个元素。

    1

    2

    3

    4

    #!/usr/bin/perl

    open(MYFILE,'1.txt');

    @arr = ;

    print @arr;

    3.写文件
      形式为:
         open(OUTFILE, ">outfile");
         print OUTFILE ("Here is an output line.\n");
      注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。
    4.判断文件状态

    1、文件测试操作符
      语法为:-op expr,如:
        if (-e "/path/file1") {
        print STDERR ("File file1 exists.\n");
        }

    文件测试操作符

    操作符描述
    -b是否为块设备
    -c是否为字符设备
    -d是否为目录
    -e是否存在
    -f是否为普通文件
    -g是否设置了setgid位
    -k是否设置了sticky位
    -l是否为符号链接
    -o是否拥有该文件
    -p是否为管道
    -r是否可读
    -s是否非空
    -t是否表示终端
    -u是否设置了setuid位
    -w是否可写
    -x是否可执行
    -z是否为空文件
    -A距上次访问多长时间
    -B是否为二进制文件
    -C距上次访问文件的inode多长时间
    -M距上次修改多长时间
    -O是否只为“真正的用户”所拥有
    -R是否只有“真正的用户”可读
    -S是否为socket
    -T是否为文本文件
    -W是否只有"真正的用户"可写
    -X是否只有"真正的用户"可执行
    注:“真正的用户”指登录时指定的userid,与当前进程用户ID相对,命令suid可以改变有效用户ID。

     例:
        unless (open(INFILE, "infile")) {
        die ("Input file infile cannot be opened.\n");
        }
        if (-e "outfile") {
        die ("Output file outfile already exists.\n");
        }
        unless (open(OUTFILE, ">outfile")) {
        die ("Output file outfile cannot be opened.\n");
        }
      等价于
        open(INFILE, "infile") && !(-e "outfile") &&
        open(OUTFILE, ">outfile") || die("Cannot open files\n");


    四、模式匹配:

    1.概念:模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def。其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line);
    2.匹配操作符 =~、!~
       =~检验匹配是否成功:$result = $var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。

    五、控制结构
    (1)、条件判断:if()elseif()else();
    (2)、循环:
      1、while循环
      2、until循环
      3、for循环
      4、针对列表(数组)每个元素的foreach循环

    1

    2

    3

    4

    5

    open(MYFILE,'1.txt');

    @arr = ;

    foreach $str (@arr){

     print $str;

    }

      5、do循环
      6、循环控制:退出循环为last,与C中的break作用相同;执行下一个循环为next,与C中的continue作用相同;PERL特有的一个命令是redo,其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,redo命令在do循环中不起作用。
      7、传统的goto语句:goto label;
    (3)、单行条件
      语法为statement keyword condexpr。其中keyword可为if、unless、while或until,如:
        print ("This is zero.\n") if ($var == 0);
        print ("This is zero.\n") unless ($var != 0);
        print ("Not zero yet.\n") while ($var-- > 0);
        print ("Not zero yet.\n") until ($var-- == 0);
        虽然条件判断写在后面,但却是先执行的。

    六、子程序
    (1)、定义
      子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。PERL中,子程序可以出现在程序的任何地方。定义方法为:
      sub subroutine{
        statements;
      }
    (2)、调用
      调用方法如下:用&调用
           &subname;
           ...
           sub subname{
              ...
           }

  • 相关阅读:
    Tomcat线程池原理(上篇:初始化原理)
    检查原生 JavaScript 函数是否被覆盖
    Unity 灯光组件Light
    【软考-中级】系统集成项目管理工程师 【19 项目收尾管理】
    怎样提高服务器安全性?45.248.11.x
    SpringBoot文件上传深入浅出
    若依框架详细使用
    linux下命令行静默安装oracle11G简要步骤
    【Vim】VSCode下 Vim 插件配置自动切换中英文输入法
    智慧灯杆-智慧城市照明现状分析(2)
  • 原文地址:https://blog.csdn.net/jh035512/article/details/128141736