perl脚本基础总结(转) perl脚本基础总结

   2023-02-09 学习力0
核心提示:原文链接: https://www.cnblogs.com/resie/p/4459571.html参考链接: https://www.jb51.net/list/list_125_1.htm                   https://www.runoob.com/perl/perl-syntax.html  perl脚本基础总结1.  单引号字符串中的\n不会被当做换行符
                   https://www.runoob.com/perl/perl-syntax.html
 
 

1.  单引号字符串中的\n不会被当做换行符处理。 如:'\'\\'  -->  '\  。

2.  双引号

                字符串联    "Hello"."World"."\n"  -->  HelloWrold 换行;

                字符串重复操作   "fred"×3  --> "fredfredfred";

                大小写       "\l","\L"  -->  小写 ; "\u","\U" --> 大写 ; "\E" 结束。

3.  字符串运算

              ==     eq       相等

              !=      ne       不等

              <       lt         小于

              >       gt        大于

             <=      le        小于或等于

             >=      ge       大于或等于

4.  用户输入      <STDIN>

5.  chomp函数:去掉文本的"\n"换行符。读写文件时,要去掉换行符。 如:chomp($text<STDIN>);

6.  单行注释:#  ;   多行注释以 "=pod"开始,"=cut" 结束。

7.  undef: 没有值时,表现为0或空字符串。

8.  defined函数: 为undef时,返回false,其余返回true。

9.  x 输出遍数。如:print "love" x 3 -->lovelovelove.

10.  特殊数组索引:"$#rocks" ,最后一个元素索引。

11.  qw简写,代替 "" 功能。 如:qw(freds bany wilad dino);

12.  @rocks=qw /break slasle labv/;  #给数组赋值。

      @copy=@qwarry; #将一个数组拷贝到另一个数组里。

13.  pop:末尾取出元素;push:将一个或一列元素加在末尾。

      如:pop(@array);  push(@array,@others);  #将@others添加到@array末尾。

14.  shift 和 unshift 对数组首操作。 shift:取出首元素。unshift:将一个或一列加在首部。

15.  当把email地址插入双引号时,$email="fred\@bedrock.edu";  $email='fred@bedrock.edu';

16.  perl最常用的默认变量:$_  。 如:  foreach(1..10){

                                                   print "I can $_!\n";

                                                   }          

17.  foreach控制结构

        如:  foreach $rock(qw/break Slee lawer/){

               print "One rock is $rock . \n"; #打印数组

             }

18.  reverse 逆转操作,将一串列表按相反的顺序返回。

        如: @fred=6..10;

              @bareny=reverse(@fred); #@bareny="10,9,8,7,6".

19.  sort:将输入的一串列表根据内部的字符顺序进行排序。

         如:ASCII字符串     @rocks =qw/breaks sholer rubble gertdned/;

                                     @sorted=sort(@rocks);

20.  强制转换成标量,context,可使用 scalar。

       如:print "I have",scalar @rocks,"rocks!\n";输出为数字。

21.  <STDIN>在列表context中:  chomp(@line=<STDIN>);  #读入所有行,不包括换行符。

        文件输入完成时:linux/MACOS x,用 ctrl+d 结束;DOS/Windows, 用 ctrl+z 结束。

22.  调用子程序时,返回值为最后一个被计算的表达式。 @_ 是子程序的一个私有变量。      可以使用“my”创建子程序的私有变量,也可以在if ,untile ,foreach 块中使用。

      如: my($fred,$bread); #定义两个私有变量。

       如果新的私有变量没有被赋值的话,标量变量 会自动赋值为 undef ;数组变量 赋值为 空列表。

23.  使用strict Pragma 严格检查某代码;use strict 迫使采用更严格的检测。

24. 调用子程序 & 可省。

       如: sub divsion{

                   $_[0]/$_[1];

             }

            my $quotient=divsion 355, 113;  #调用,同 my $quotient=&divsion(355,113);

25.  严重错误和 die 函数

       如: if(!open LOG,">>logfile"){

               die "Cannot create logfile:$_!";  #$_ 输出系统错误信息

            }

        一般,0表示正常;非0表示失败。常见的:1-->命令行中语法错误; 2--> 运行错误  ; 3--> 没有找到匹配文件。

26.  @ARGV  含义是包含了程序从命令行得到的所有参数。输入。

27.   复制文件: system('cp -r ./filea.txt ./map'); #将文件.txt复制到map文件夹下

29.   读文件:  open(FILE,"file.txt");  # FILE 为文件句柄。

                    my $record;

                    while($record=<FILE>){

                         print ("file record is :$record\n");

                    }

                   close(FILE);

30.  写文件:open(FILE1,">write.txt");

                  syswrite(FILE1,"I konw it ! \n");  #将 "I konw it!"写入文件。

                 close(FILE1);

        注:> 覆盖写入;>> 追加写入。

31.  创建文件夹:mkdir(hello,0777)||die "not create!\n";

      创建文件: unless(-e "name.txt"){

                       open(FILE2,">name.txt") or &out_err("not create!\n");

                     }

       删除文件:unlink("name.txt");

       创建目录(可多级):mkpath(directoy,1,0711);       删除目录:rmtree(directoy,1,1);

       删除文件夹:rmdir("hello")||die "not delete";

32.  数据库:windows下安装DBD:->cmd 输入 ppm install DBD::mysql

33.数据库连接: use DBI;

                      my $dbh=DBI->connect("DBI:mysql:database=数据库;host=localhost;port:3308","用户名","密码",{'RaiseError'=>1});

                      my $sth=$dbh->prepare("select * from asset");

                           $sth->execute();

                       while(my $ref=$sth->fetchrow_hashref()){

                             print "$ref->{'id'}\t".

                                     "$ref->{'name'}\n";

                       }

                       $sth->finish();

                       $dbh->disconnect();

34.哈希:my %last_name=(

                       "fred"=>"finished",

                       "dion"=>"undef",

                       "barney"=>"rubble"  

                     );

35.  keys 和values 函数

          my %hash=("a"=>1,"b"=>2,"c"=>3);

          my @k=keys %hash;   #得到key值

          my @v=values %hash;  #得到values值

       注: @k和@v中的"a","b","c" 的顺序可能不同,但是@k和@v还是一一对应的。如"b"=>2,可能在第三位。

36.  each函数:迭代hash中的每个元素。

      如:while(($key,$values)=each %hash){

                print "$key=>$values\n";

        }

37.  exists 函数:  if(exists $books{$dino}){ };

      delete函数: delete $books{$dino}; #删除

38.  大小写转换: $_="I saw Barney with Fred.";

                       大写:S/(fred)|barney/\U$1/gi;  #BARNEY

                       小写:S/(fred)|barney/\L$1/gi;  #barney

39.split操作:分割      @fields =split /separtor/,$string;

                               如: @fileds=split/:/,"abc:def:d:h";

     join粘合函数: my $result = join $glue,@pieces;

                         如:my $x=join ":",4,5,6,7,8;    # 4:5:6:7:8

40. 控制条件 unless 除非条件为真,否则执行块中代码。

                 unless($fred=~/^[A-Z-]\W*$/i){

                      print "The $fred";

                  }

      until:与while相反,当条件为假时,重复执行。

41. $n=++$m; #先将变量加1,再取值;

      $n=$m++;#先取值,在加1.

42.  last会立刻结束循环。 for,foreach,while,until,裸块。

       next 跳到当前循环的最后面,next之后进入下一轮循环。

       redo 调到当前循环的顶端,不进行条件表达式判断以及接着本次循环(可放到循环体后面)。

      标签块: LINE:while(<>){

                         foreach(split){

                                  last LINE if/__END__/;

                            }

                      }

43.  三元操作符:Express?if_true_exp : if_false_exp

44.  localtime函数:时间转换

       如:my $timestemp=1180630098;

            my  $date=localtime $timestemp;

     格式:my($sec,$min,$hour,$day,$mon,$year,$wdy,$yday,$isdst)=localtime $timestemp;

      my $now=gmtime;    #得到当前时间

45.   chdir 改变工作目录。 如:chdir "/etc" or die "cannot chdir to /etc:$! ";

        globbing:shell将每一个命令行中的任何的文件名模式转换成它所匹配的文件名。

                    如: my @all_files=glob "*";

                          my @pm_files=glob "*.pm";

                          my  @all_files=<*>;

 46.   目录句柄:打开:opendir     读入:readdir        关闭:closedir     (用法与打开文件相似)

        重命名: rename "old","new";

       改变文件或目录权限:chomd  。 如:chomd 0075,"fred","bamey";

       chown :改变一批文件的所有者及所在的组。

             如: defined(my $user=getpwnam "merlyn");  #getpwnam将名字转化为数字

                   defined(my $group=getgrnam "users");   #getgrnam将组名转化为数字

                   chown $user,$group,glob "/home/merlyn/*";   #返回文件个数

        readlink:符号连接指向的地方。    如: my $perl =readlink "/usr/local/bin/perl";

47.   使用索引寻找字符串:index

          $where =index($big,$small);  #从0开始编号

          rindex: 某个字符串最后出现的位置。

          substr: $part = substr($string,$inintial_position,$length);   #inintial_position:从0开始的编号的初始位置。length:字符串长度。string:父串

                      如: my $mineral=substr("Fred J.Flintstone",8,5);  #得到"Flint"

                         替换: substr("hello ,world",0,5)="GoodBye";  #GoodBye,world

 48.  sprintf 格式化数据,返回值为被请求字符串,而非打印。

                如:my $money=sprintf "%.2f",2.49997;  #2.5049.  eval 捕捉错误,放在$@中。

 49.  使用grep在列表得到元素。

                  如:my @odd_number=grep{$_%2} 1..1000;

50. perl 目前遇到的安装模块:main::tail

1.  单引号字符串中的\n不会被当做换行符处理。 如:'\'\\'  -->  '\  。

2.  双引号

                字符串联    "Hello"."World"."\n"  -->  HelloWrold 换行;

                字符串重复操作   "fred"×3  --> "fredfredfred";

                大小写       "\l","\L"  -->  小写 ; "\u","\U" --> 大写 ; "\E" 结束。

3.  字符串运算

              ==     eq       相等

              !=      ne       不等

              <       lt         小于

              >       gt        大于

             <=      le        小于或等于

             >=      ge       大于或等于

4.  用户输入      <STDIN>

5.  chomp函数:去掉文本的"\n"换行符。读写文件时,要去掉换行符。 如:chomp($text<STDIN>);

6.  单行注释:#  ;   多行注释以 "=pod"开始,"=cut" 结束。

7.  undef: 没有值时,表现为0或空字符串。

8.  defined函数: 为undef时,返回false,其余返回true。

9.  x 输出遍数。如:print "love" x 3 -->lovelovelove.

10.  特殊数组索引:"$#rocks" ,最后一个元素索引。

11.  qw简写,代替 "" 功能。 如:qw(freds bany wilad dino);

12.  @rocks=qw /break slasle labv/;  #给数组赋值。

      @copy=@qwarry; #将一个数组拷贝到另一个数组里。

13.  pop:末尾取出元素;push:将一个或一列元素加在末尾。

      如:pop(@array);  push(@array,@others);  #将@others添加到@array末尾。

14.  shift 和 unshift 对数组首操作。 shift:取出首元素。unshift:将一个或一列加在首部。

15.  当把email地址插入双引号时,$email="fred\@bedrock.edu";  $email='fred@bedrock.edu';

16.  perl最常用的默认变量:$_  。 如:  foreach(1..10){

                                                   print "I can $_!\n";

                                                   }          

17.  foreach控制结构

        如:  foreach $rock(qw/break Slee lawer/){

               print "One rock is $rock . \n"; #打印数组

             }

18.  reverse 逆转操作,将一串列表按相反的顺序返回。

        如: @fred=6..10;

              @bareny=reverse(@fred); #@bareny="10,9,8,7,6".

19.  sort:将输入的一串列表根据内部的字符顺序进行排序。

         如:ASCII字符串     @rocks =qw/breaks sholer rubble gertdned/;

                                     @sorted=sort(@rocks);

20.  强制转换成标量,context,可使用 scalar。

       如:print "I have",scalar @rocks,"rocks!\n";输出为数字。

21.  <STDIN>在列表context中:  chomp(@line=<STDIN>);  #读入所有行,不包括换行符。

        文件输入完成时:linux/MACOS x,用 ctrl+d 结束;DOS/Windows, 用 ctrl+z 结束。

22.  调用子程序时,返回值为最后一个被计算的表达式。 @_ 是子程序的一个私有变量。      可以使用“my”创建子程序的私有变量,也可以在if ,untile ,foreach 块中使用。

      如: my($fred,$bread); #定义两个私有变量。

       如果新的私有变量没有被赋值的话,标量变量 会自动赋值为 undef ;数组变量 赋值为 空列表。

23.  使用strict Pragma 严格检查某代码;use strict 迫使采用更严格的检测。

24. 调用子程序 & 可省。

       如: sub divsion{

                   $_[0]/$_[1];

             }

            my $quotient=divsion 355, 113;  #调用,同 my $quotient=&divsion(355,113);

25.  严重错误和 die 函数

       如: if(!open LOG,">>logfile"){

               die "Cannot create logfile:$_!";  #$_ 输出系统错误信息

            }

        一般,0表示正常;非0表示失败。常见的:1-->命令行中语法错误; 2--> 运行错误  ; 3--> 没有找到匹配文件。

26.  @ARGV  含义是包含了程序从命令行得到的所有参数。输入。

27.   复制文件: system('cp -r ./filea.txt ./map'); #将文件.txt复制到map文件夹下

29.   读文件:  open(FILE,"file.txt");  # FILE 为文件句柄。

                    my $record;

                    while($record=<FILE>){

                         print ("file record is :$record\n");

                    }

                   close(FILE);

30.  写文件:open(FILE1,">write.txt");

                  syswrite(FILE1,"I konw it ! \n");  #将 "I konw it!"写入文件。

                 close(FILE1);

        注:> 覆盖写入;>> 追加写入。

31.  创建文件夹:mkdir(hello,0777)||die "not create!\n";

      创建文件: unless(-e "name.txt"){

                       open(FILE2,">name.txt") or &out_err("not create!\n");

                     }

       删除文件:unlink("name.txt");

       创建目录(可多级):mkpath(directoy,1,0711);       删除目录:rmtree(directoy,1,1);

       删除文件夹:rmdir("hello")||die "not delete";

32.  数据库:windows下安装DBD:->cmd 输入 ppm install DBD::mysql

33.数据库连接: use DBI;

                      my $dbh=DBI->connect("DBI:mysql:database=数据库;host=localhost;port:3308","用户名","密码",{'RaiseError'=>1});

                      my $sth=$dbh->prepare("select * from asset");

                           $sth->execute();

                       while(my $ref=$sth->fetchrow_hashref()){

                             print "$ref->{'id'}\t".

                                     "$ref->{'name'}\n";

                       }

                       $sth->finish();

                       $dbh->disconnect();

34.哈希:my %last_name=(

                       "fred"=>"finished",

                       "dion"=>"undef",

                       "barney"=>"rubble"  

                     );

35.  keys 和values 函数

          my %hash=("a"=>1,"b"=>2,"c"=>3);

          my @k=keys %hash;   #得到key值

          my @v=values %hash;  #得到values值

       注: @k和@v中的"a","b","c" 的顺序可能不同,但是@k和@v还是一一对应的。如"b"=>2,可能在第三位。

36.  each函数:迭代hash中的每个元素。

      如:while(($key,$values)=each %hash){

                print "$key=>$values\n";

        }

37.  exists 函数:  if(exists $books{$dino}){ };

      delete函数: delete $books{$dino}; #删除

38.  大小写转换: $_="I saw Barney with Fred.";

                       大写:S/(fred)|barney/\U$1/gi;  #BARNEY

                       小写:S/(fred)|barney/\L$1/gi;  #barney

39.split操作:分割      @fields =split /separtor/,$string;

                               如: @fileds=split/:/,"abc:def:d:h";

     join粘合函数: my $result = join $glue,@pieces;

                         如:my $x=join ":",4,5,6,7,8;    # 4:5:6:7:8

40. 控制条件 unless 除非条件为真,否则执行块中代码。

                 unless($fred=~/^[A-Z-]\W*$/i){

                      print "The $fred";

                  }

      until:与while相反,当条件为假时,重复执行。

41. $n=++$m; #先将变量加1,再取值;

      $n=$m++;#先取值,在加1.

42.  last会立刻结束循环。 for,foreach,while,until,裸块。

       next 跳到当前循环的最后面,next之后进入下一轮循环。

       redo 调到当前循环的顶端,不进行条件表达式判断以及接着本次循环(可放到循环体后面)。

      标签块: LINE:while(<>){

                         foreach(split){

                                  last LINE if/__END__/;

                            }

                      }

43.  三元操作符:Express?if_true_exp : if_false_exp

44.  localtime函数:时间转换

       如:my $timestemp=1180630098;

            my  $date=localtime $timestemp;

     格式:my($sec,$min,$hour,$day,$mon,$year,$wdy,$yday,$isdst)=localtime $timestemp;

      my $now=gmtime;    #得到当前时间

45.   chdir 改变工作目录。 如:chdir "/etc" or die "cannot chdir to /etc:$! ";

        globbing:shell将每一个命令行中的任何的文件名模式转换成它所匹配的文件名。

                    如: my @all_files=glob "*";

                          my @pm_files=glob "*.pm";

                          my  @all_files=<*>;

 46.   目录句柄:打开:opendir     读入:readdir        关闭:closedir     (用法与打开文件相似)

        重命名: rename "old","new";

       改变文件或目录权限:chomd  。 如:chomd 0075,"fred","bamey";

       chown :改变一批文件的所有者及所在的组。

             如: defined(my $user=getpwnam "merlyn");  #getpwnam将名字转化为数字

                   defined(my $group=getgrnam "users");   #getgrnam将组名转化为数字

                   chown $user,$group,glob "/home/merlyn/*";   #返回文件个数

        readlink:符号连接指向的地方。    如: my $perl =readlink "/usr/local/bin/perl";

47.   使用索引寻找字符串:index

          $where =index($big,$small);  #从0开始编号

          rindex: 某个字符串最后出现的位置。

          substr: $part = substr($string,$inintial_position,$length);   #inintial_position:从0开始的编号的初始位置。length:字符串长度。string:父串

                      如: my $mineral=substr("Fred J.Flintstone",8,5);  #得到"Flint"

                         替换: substr("hello ,world",0,5)="GoodBye";  #GoodBye,world

 48.  sprintf 格式化数据,返回值为被请求字符串,而非打印。

                如:my $money=sprintf "%.2f",2.49997;  #2.5049.  eval 捕捉错误,放在$@中。

 49.  使用grep在列表得到元素。

                  如:my @odd_number=grep{$_%2} 1..1000;

50. perl 目前遇到的安装模块:main::tail

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Linux下安装Perl和Perl的DBI模块
    今天在虚拟机测试shell脚本的时候,有些命令使用不了。比如说 mysqlhotcopy ,它提示Perl的版本太低。我用的 RedHat9 的Perl才5.8.0版本。。。(2002年以前的)严重过时。所以重新安装了新版本的 Perl,过程记录如下: 1、在官方网站下载新版本的源码包:http:
    03-16
  • Perl 与Form
    说明事项: 這個範例用來說明如何經由網頁上的HTML form 表單元件來呼叫伺服器端的perl 程式。这个范例用来说明如何经由网页上的HTML form 表单元件来呼叫伺服器端的perl 程式。首先在網頁上設計表單元件,這個範例是設計一個按鈕,其原始碼如下:首先在网页
    02-10
  • Perl学习 perl培训
    http://www.sun126.com/perl5/perl5-1.htm翻译: flamephoenix 第一章 概述一、Perl是什么?二、Perl在哪里?三、运行四、注释一、Perl是什么?  Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用
    02-10
  • - calm_水手">Perl中的箭头符-> - calm_水手
    Perl中的箭头符-2012-05-21 17:14 calm_水手 阅读(623) 评论(0) 编辑 收藏 举报  有两种用法,都和解引用有关。第一种用法,就是解引用。根据 - 后面跟的符号的不同,解不同类型的引用,-[] 表示解数组引用,-{} 表示解散列引用,-() 表示解子程序引
    02-09
  • Regex in Perl
    Regex in Perl
    regex literal   代表正则文字, 就是 m/regex/ 部分中的 regex, 这部分有自己的解析规则. 用 Perl 的行话就是 "表示正则含义的双引号字符串(regx-aware double-quoted string)", 及处理后传递给正则引擎的结果. 正则文字支持的特性:  1. 变量插值.    
    02-09
  • perl脚本语言学习 perl脚本调用perl脚本
    来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的。到现在为止已经入职两个月,用perl脚本做了这些活:1. 修改了公司的一个爬取网页源代码的脚本2. 改进了一个出特征库的脚本,根据svn status的状态,来优化,将只需要添加的DB的数
    02-09
  • Perl模块的安装方法 perl 安装模块
    1. 下载离线安装包 *.tar.gz的形式解包后,#perl Makefile.PL#make#make install2. 在联网的情况下,通过CPAN安装# perl -MCPAN -e shellcpan install PAR::Packer 
    02-09
  • Perl像C一样强大,像awk、sed等脚本描述语言一
    Perl是由Larry Wall设计的,并由他不断更新和维护的编程语言。Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。Perl与 脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl
    02-09
  • 27-Perl 进程管理
    1.Perl 进程管理Perl 中你可以以不同的方法来创建进程。本教程将讨论一些进程的管理方法。你可以使用特殊变量 $$ 或 $PROCESS_ID 来获取进程 ID。%ENV 哈希存放了父进程,也就是shell中的环境变量,在Perl中可以修改这些变量。exit() 通常用于退出子进程,主
    02-09
  • 在perl中简单的正则匹配 正则匹配或的使用
    (一)、在perl中关于元字符的匹配元字符代表含义点号( .)匹配处换行符以外的任何单字符星号(*)匹配前面的内容零次或多次反斜线屏蔽元字符的特殊含义。\\代表\,\.匹配点号.*匹配所有的字符串加号(+)匹配前一个条目一次以上问号(?)表示前面一个条目可
    02-09
点击排行