perl小结

想必大家都有这样的经历,在学习一门编程语言的时候,得有很多语法,但是工作中可能只有那么一小部分会用到,其余的可能只在特殊场合才会用。这也是我在最近学习perl的体会,所以决定小结一下perl中最常用的语法,不常用的如果真的用到了可以再查资料,这样可能会学得快些吧,只是个人经验。

开始总结。。。

1. 单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包含单引号和反斜线时起作用。单引号另一个特性是可以跨多行。

2. 字符串和数值的互相转换:若字符串中含有非数字的字符,则从左起至第一个非数字的字符。

3. PERL实际上把整数存在你的计算机中的浮点寄存器中,所以实际上被当作浮点数看待。在多数计算机中,浮点寄存器可以存贮约16位数字,长于此的被丢弃。整数实为浮点数的特例。

4.在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置
5.数组的输出:

   #!bin/usr/perl
  use strict;
  my @array=(1,2,3);
  print (@array,"\n");    输出:123
  print ("@array\n");     输出:1 2 3

6.列表范围
   (1..10) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
   (2, 5..7, 11) = (2, 5, 6, 7, 11)
   (2.1..5.3) = (2.1, 3.1 ,4.1, 5.1)
   (4.5..1.6) = ()

7.子数组
  @array = (1, 2, 3, 4, 5);
  @subarray = @array[0,1]; # @subarray = (1, 2)
  @subarray2 = @array[1..3]; # @subarray2 = (2,3,4)
  @array[0,1] = ("string", 46); # @array =("string",46,3,4,5)

8.列表/数组的长度
  当数组变量出现在预期简单变量出现的地方,则PERL解释器取其长度。
    @array = (1, 2, 3);
    $scalar = @array; # $scalar = 3,即@array的长度
    ($scalar) = @array; # $scalar = 1,即@array第一个元素的值
9.字符串中的方括号和变量替换
    "$var[0]" 为数组@var的第一个元素。
    "$var\[0]" 将字符"["转义,等价于"$var". "[0]",$var被变量替换,[0]保持不变。
    "${var}[0]" 亦等价于"$var" ."[0]"。
    "$\{var}"则取消了大括号的变量替换功能,包含文字:${var}.

10.写文件
     形式为:
        open(OUTFILE, ">outfile"); 如果文件不存在,会自动创建此文件。
        print OUTFILE ("Here is an output line.\n");
    注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。
11、子程序中局部变量的定义有两种方法:my和local。

     其区别是:my定义的变量只在该子程序中存在;而local定义的变量不存在于主程序中,但存在于该子程序和该子程序调用的子程序中(在PERL4中没有my)。
12.面向对象:
    .类是一个Perl包,其中含提供对象方法的类。
    .方法是一个Perl子程序,类名是其第一个参数。
    .对象是对类中数据项的引用。
13.创建类:
    (1)一个模块就是一个包,一个包就是一个类
            -----包的缺省扩展名为".pm",即Perl Module
            -----“1;”为最后一行。这是Perl包的必需条件

   (2)构造函数:new()方法是对象的构造函
        sub new {
            my $this = {}; # Create an anonymous hash, and #self points to it.
            #初始化操作
            bless $this; # Connect the hash to the package class_name.
            return $this; # Return the reference to the hash.
         }

   (3)"->"操作符调用方法
   (4)析构函数
      sub DESTROY {
         #
         # Add code here.
         #
      }

14.方法:
      Perl类的方法(成员函数)只不过是一个Perl子程序而已;方法的第一个参数为对象或其被引用的包。Perl有两种方法:静态方法和虚方法。
      (1)静态方法第一个参数为类名,一般忽略掉第一个参数
           ------构造函数即静态方法
      (2)虚方法第一个参数为对象的引用
          -----虚方法通常首先把第一个参数shift到变量self或this中,然后将该值作普通的引用使用。
         -----通常为此形式:my $this = shift 或是my $this = shift @_
15.方法的输出
     输出方法需要Exporter模块,在包的开始部分加上下列三行:
     package package_name;#和当前定义的模块文件(.pm)同名
     require Exporter;
     @ISA = qw (Exporter);
     @EXPORT = qw (method1,method2,...);#把自己的类方法列在@EXPORT数组中
         -----Perl类的继承是通过@ISA数组实现的;@ISA数组含有类(包)名,当一个方法在当前包中未找到时就到@ISA中的包去寻找
16.创建对象:
    $obj_name = new calss_name;
17.shift返回列表的当前第一个值,并缩短列表1个大小。
18.函数substr(string,offset,length)用法:
   -------当length为负值时候,返回从offset开始的值,但是不包括最后|length|个字符。
19.perl中的引用有些像unix下面的连接文件,只有所有的引用被去掉,perl才会释放这个变量的空间。
20.多维数组:
     创建:$abc=[["00","01"],["10","11"]];
     使用:$var=$abc->[1][1];
21.perl对大小写敏感

    perl常量:标量常量、列表常量、哈希常量

22.箭头运算符(->):
    (1):访问引用中的数据元素
    (2):对象中使用,通过它来调用一个对象(或实例)的方法

23.defined EXPR
    Returns a Boolean value telling whether EXPR has a value other than the undefined value undef
24.函数运行参数:
    @ARGV 表示命令行参数(选项参数不计在内,如-h,--help之类的)
    $ARGV[0]表示第一个参数
    $#ARGV 空数组的返回值为-1;
    $#array_name返回数组最后一个元素的下标
    print $list[$_] foreach 0 .. $max;   #$_是默认的下标输入
25.Hash元素的增删:
   (1)一定要使用delete函数来删除关联数组的元素,这是唯一的方法。
   (2)一定不要对关联数组使用内嵌函数push、pop、shift、unshift及splice,因为其元素位置是随机的。

26. use lib LIST;
      is almost the same as saying
          BEGIN { unshift(@INC, LIST) };
      The "no lib" statement deletes all instances of each named directory from @INC
27.require:
     用require函数可以把程序分割成多个文件并创建函数库。例如,在myfile.pl中有定义好的Perl函数,可用语句require ("myfile.pl"); 在程序中包含进来。当Perl解释器看到这一语句,就在内置数组变量@INC指定的目录中寻找文件myfile.pl。如果找到了,该文件中的语句就被执行,否则程序终止并输出错误信息。 假设目录/u/perldir中存有你的Perl子程序库,子程序mysub存贮在文件mysub.pl中。现在来包含上该文件:
       unshift (@INC, "/u/perldir");
       require ("mysub.pl");



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值