perl语法简介

Perl语法简介

1.PERL变量

2.PERL运算符

1.PERL变量

1.1.Perl变量分类

Perl变量分为标量变量,数组变量,关联数组变量3类.PERL的变量对大小写敏感,比如:An,
AN,an是3个不同的变量,但是不同类型的变量可以使用同一个名字,比如:VAR可以是一个标量
变量,同时也可以有一个数组变量也是VAR.这是因为PERL对每种类型的变量采用独立的名字空
间,另外PERL的变量,可以存储任何类型的数据,无须像C那样声明变量,数据类型之间会自动转
换,同时PERL变量也有全局与过程变量之分,默认是全局变量.

1.2.Perl变量

1.2.1 Scalar变量(标量变量)

标量变量只能存放一个值.PERL中的标量变量名总以字符$开头.下面的PERL语句把9这个
值赋给标量变量$nine.把"BATI"赋给标量变量$name.然后用PRINT语句打印出来.

    $nine=9;
    $name=‘BATI‘;
    print($name,‘is‘,$nine);

    把上述语句存为TEST01.PL文件,然后再在DOS环境下(WIN9X的MS-DOS方式也可以)运行:
    C:\PERL5>PERL TEST01.PL(回车)
    BATI is 9
    (什么?很眼熟??是阿,PERL和我们常用C就是这么相似)

1.2.2 数组变量

数组是一次能够存储多个变量的表.它的赋值方法如下:

    @weekdays=(‘Sun‘,‘Mon‘,‘Tue‘,‘Wed‘,‘Thu‘,‘Fri‘,‘Sat‘);
   
    print (@weekdays);      #输出为:  SunMonTueWedThrFriSat
    print ($weekdays[1]);   #输出为: Sun
    @[email protected][1..5]; #此时,数组work的值为(‘Mon‘,‘Tue",...,‘Fri‘);
    @none=();                #表示空数组

    数组变量名以@开头,[]内是数组的下标值,下标值从0开始.这与C依然很相似.
    同样的在PERL中,如果只有数组名,而忽略下标的话,也会像C那样输出整个输出,比如:
第一个输出语句.
    但请注意在输出Sun那一句时,当我们引用数组中某一个值的时候,我们不再使用@,而是
使用$作为变量的开头,因为就单个值而言,它是一个标量变量,所以如此(这和C可不一样哦)
当然你还得给出下标值.
    在给数组work赋值的语句中,我们用到了SLICE初始化数组,你不必关心什么是SLICE,你
只要记住这种形式就可以了,其实SLICE是表格的一部分,是官方的表示.
    对数组的赋值是多种多样的.前面我们看到的都是用值对数组赋值,同样你也可以用变量
或者另一个数组的值给数组赋值,比如:

    @name=($firstname,@lastname);
    @say=(‘He said‘,@saysomething);

    以下是SLICE的例子:

    @[email protected][0,6];    #数组weekend的值为(‘Sun‘,‘Sat‘)
    print(@weekdays[1..5,0,6]);  #输出结果为‘MonTueWedThuFriSunSat‘

    PERL还支持一种特殊构造符$#var,它是用来返回数组最后一个索引值.比如下面的语句利
用$[构造符确定数组的第一个索引值,用$#var确定数组最后的索引值,然后显示整个数组:

    for ($i=$[;$i<=$#buffer;$i++) { print $buffer[$i]; }

    上面语句与print @buffer;的输出结果是一样的.

1.2.3 标量与数组变量

表构造符(,)与顺序计值运算符(,)非常相似.因此,PERL调用哪一个运算符取决于命令文件
运行时的具体情况,即文件正在使用数组还是标量值.PERL在数组表达式中调用表结构符,  在顺
序计值中调用计值运算符.请考虑以下两个表达式:

    @an_array=(1,2,3,4,5);
    $a_scalar=(1,2,3,4,5);

    第一个语句初始化一个数组,第二句把$a_scalar变量的值设为5,而且取消了前4个元素的赋
值作用.
    再来看一个例子:

    print $assoc{1,2};
    @print $assoc{1,2};

    第一句打印二维关联数组的一个元素值,而第二句打印一维数组的两个元素值.

1.2.4 关联数组变量

关联数组变量与数组变量很相似,都可以存储标量变量的表.它们的区别在于数组变量必须通
过整数下标来引用数组元素,  而关联数组变量可以通过任何值作为下标而达到访问数组元素的目
的.关联数组的下标我们称之为键值(Key),是一种索引值.下面我们通过一个例子来理解:

    $ages{‘Bob‘}=35;
    $ages{‘Mary‘}=25;
    $,=‘‘;
    print @ages{‘Bob‘,‘Mary‘};
    print keys(%ages );
    for $name(keys(%ages))
    {
        print "$name is $ages{$keys}\n";
    }

    程序把一个值赋给‘$,‘变量,这样以后的print语句的输出会受到影响,关于特殊变量‘$,‘我们
将在以后介绍.PERL调用关联数组变量时,使用花括号{}括起键值.
    @ages{‘Bob‘,‘Mary‘}在花括号内给出了键值,表示引用一个元素,此语句中有两个键值,表示引
用数组的一部分,其结果应为(35,25)与($ages{‘Bob‘},$ages{‘Mary‘})语句的结果相同.
    print keys(%ages)使用了keys运算符.其结果将返回关联数组的所有键值,组成一个表.%ages
表示引用整个关联数组.
    请注意循环语句中的print语句,在这里我们看到了在""(双引号)中插入变量的用法,这是非常有
用的.在输出结果的时候,变量将被替换成变量的值作为输出的最终结果,这就是所谓的内插法.但是PERL
不允许在‘‘(单引号)中插入变量!!!!

2.PERL运算符

2.1 算数运算符

  PERL虽然在变量与数据类型都和C大不相同,然而它的运算符和C几乎相同,除了C的类型
转换运算符type,指针引用运算符*ptr和结构成员选择符,其他C的运算符几乎完全出现在
Perl里,Perl新增了几个新运算符,比如在字符处理方面.
  Perl到目前支持的算数运算符有一些几种:

    +       加法运算符
    -       减法运算符
    *       乘运算符
    /       除运算符(只对浮点数运算)
    %       取模运算符(只对整数运算)

    下面给出Perl算数运算的一些实例:

    $x=2.5;
    $y=3;
    print ($x+2*$y);
    print (7/$y);
    print int(7/$y);
    print (7%$y);
    print (7.5%$y);

    Perl还支持递增和递减运算符:

    ++      递加
    --      递减

    Perl新增了乘方运算符:**,请看下面的例子:

    $x=2**3;              #2的3次方
    $y=2**0.5;          #2的平方根
    $z=-2**-3;          #结果是:-0.125

2.2 位运算符

  位运算符对二进制表达式的整数形式进行处理,运算结果为整数.如果位运算符的操作数是
字符串或分数,Perl首先把它们转换成整数,并用32位长整数形式表示它们.Perl支
持所有的C语言运算符:

    |        位或运算符
    &        位与运算符
    .        位非运算符
    << 位左移运算符>>        位右移运算符

    有关位运算符的详细内容,请参看C语言有关的内容,这里我们就不多讲了,只举几个例子:

    $x=5;
    $y=3;
    print $x | $y;     #结果是7(二进制表示:111)
    print $x & $y;   #结果是1(二进制表示:001)
    print $x << 2; #结果是20(二进制表示:10100) print $x>> 1;     #结果是2(二进制表示:10)

2.3 比较运算符

 

  比较运算符的功能是比较两个操作数的值.Perl在进行比较运算前,会先将字符操作数转换
为数字.Perl用专门的字符串比较运算符对纯字符进行表运算.
运算符 等价字符串 含义
==
!=
>=
<=
<=>
eq
ne
gt
lt
ge
le
cmp
等于
不等于
大于
小于
大于等于
小于等于
不等于(结果带符号)

2.4 逻辑运算符 逻辑运算符测试布尔表达式的值,其结果为真或假.Perl认为逻辑运算符的每个操作数都
为布尔值(即真或假).Perl的逻辑运算符包括:

    ||        逻辑或运算符;
    &&        逻辑与运算符.

    Perl按从左到右的顺序计算逻辑表达式.当逻辑或运算符的一个操作数为真,或者当逻辑
与运算符的一个操作数为假时,Perl将终止逻辑表达式的计算.Perl利用这种短回路计值
快速计算表达式的值.因此,这两个运算符也叫短回路AND和短回路OR.
  除了以上两个运算符,还有以下三种逻辑运算符:

    !         负运算符
    ?:        条件运算符
    ,         顺序计值符

    运算符!否定操作数的布尔值,相当于逻辑非.?:条件运算符,有3个操作数,表达形式为:

    condition?true-result:false-result

    下面的语句通过?:运算符,实现访问权限的区分:

    $access=($user eq ‘流云‘?‘root‘:‘guest‘);

    顺序运算符(,)从严格意义上讲并不是逻辑运算符,因为它并不检查操作数的真假.Perl
从左到右的计算逗号运算符,并返回最右边的操作数,都好运算符是从C延续出来的,具体使用可以
参考C里的用法,这里我就不累述了.

2.5 字符运算符

由于Perl本身是为文本处理开发的.因此,它增加许多新的字符串运算符.Perl的字符
串运算符包括:

    .      字符连接运算符
    x      字符串复制运算符
    =~     将一个变量绑定到模式匹配
    !~     将一个变量绑定到模式匹配,取非

    前两个运算符比较简单.现在看看例子:

    print ‘C‘.‘a‘.‘l‘x2;         #输出结果将是:  Call;

    后两个运算符主要用于模式匹配,以后将会有关于模式匹配的具体讲解,这里就不多说了,我们
来看看它们的例子,以了解它们的作用:

    $text=‘今天下雨了‘;
    print ($text=~/下雨/)?‘今天下雨了‘:‘今天没下雨‘;

    我们看到的例子可以发现是否变量中是否包含我们所需要的字符串.

2.6 赋值运算符

赋值运算符和C语言的赋值运算符差不多,以下是各种赋值运算符:

    =  +=  -=  *=  /=  %=  |=  &=
    ^=  ~=  <<=>>=  **==  .=  x=

2.7 Lvalue

 在Perl和C语言中,lvalue表示赋值运算符左边的实体.也就是说,lvalue与变
量一样,可以给它分配值.例如在Perl命令文件中不能向字符串赋值,如"Bob"=32这个语
句就是错误的!因为"Bob"不是一个lvalue,但是如果对$Bob赋值,如$Bob=32,
这个语句就是正确的!因为变量$Bob是一个lvalue.
  在Perl中,任何有意义的lvalue只能表示一个实体.例如下面的第一个语句列出了表的
值(就是数组的值,只不过说法不一样罢了),@color就是一个lvalue,第二个语句中,
将表的值赋值给3个标量变量,3个变量就是lvalue:

  @color=($r,$g,$b);
    ($r,$g,$b)[email protected];

  Perl的赋值运算符对表进行处理时,可以不对整个表进行处理,而只针对表的某一个或者几个
元素进行赋值:

  @times[2,5,9]=(20,40,10);

  下面的语句把表的前2个值赋给两个标量,其余部分赋给另一个表:

     ($arg1,$arg2,@reset)[email protected];

2.8 表运算符

 Perl包括以下一些表运算符,而C没有:

    ,       表构造符
    ..      范围运算符
    x       表复制运算符

  前面我们在介绍"标量与数组变量"时,已经设计到了构造符(我认为叫分隔符,
更容易理解些)范围运算符我们在用来创建数组下标范围时,也用到过!不过,请注意它的功能还远不止这个,
它还可以用来作为返回从左边操作数到右边操作数之间顺序整数的范围(包括左右两边的操作数).命令文件通
常同时利用范围运算符创造一个连续整数表:

    @digits=0..9;

    这样我们就创造了一个表,其值为(0,1,2,3,4,5,6,7,8,9)
  表复制运算符是一个非常有趣的东东,我们来看一个例子:

    @copy_3=(1,2,3)x3;

    这个表有9元素,其值为(1,2,3,1,2,3,1,2,3)怎么样?很方便吧!!:)

2.9 文件运算符

Perl大大扩展了文件处理运算符.Perl至少有27个运算符在不打开文件的情况下,能够测试文件
的信息,但是很不幸,由于Perl在最初是UNIX下的工具,所以绝大多数的运算符在我们流行的平台上:
WIN9X/NT系统无法使用.但万幸的是不是全部还有4个运算符绝对可用,而且功能不错哦!一下就是那
4个运算符:

    -d            测试文件是不是一个目录;
    -e            测试文件是否存在;
    -s            测试文件的大小;
    -w            测试文件是否是可写的;

  前两个运算符返回的是布尔值(即真或假),第3个运算符返回文件的大小(以字节作为返回方式).下面是
使用方法:

    if(-e ‘perl.exe‘)
    {
print ‘File size is:‘-s‘perl.exe‘;
    }
    else
    {
        print ‘Can\‘t find perl.exe\n‘;
    }
    (-w ‘SomeFile‘)||die "Cannot write to SomeFile\n";

时间: 2024-11-09 02:22:14

perl语法简介的相关文章

MarkDown语法简介

Markdown 语法简介 概述 宗旨 兼容 HTML 特殊字符自动转换 区块元素 段落和换行 标题 区块引用 列表 代码区块 分隔线 区段元素 链接 强调 代码 图片 其它 反斜杠 自动链接 感谢 Markdown 免费编辑器 概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成.Markdown 语法受到一些既有 text-to-HTML 格

freemarker语法简介

ftl是一种模板标记语言,用于渲染数据,输入html结构.语法简介如下: ${book.name} ${book.name?if_exists} //值是否存在 ${book.name??} //值是否存在 ${book.name?has_content} //值是否存在 ${book.name?default("xxx")} //默认值xxx ${book.name!"xxx"} //默认值xxx ${book.date?string("yyyy-mm-

Razor基础语法简介

原文:Razor基础语法简介 Razor的出现,使页面看起更加简洁,Razor的页面后缀为:.cshtmlRazor基础语法:1.代码注释:      多行注释: @*注释信息*@     单行注释: // 注释 1.代码体{...} @{ var x=100; var y=100; string str="this is string": } 在代码体中,没一行都需要用";"结束,代码区中,字母区分大小写.字符类型常量必须用""括起来,2. 由

Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)

目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉及的语法. 1.assert(condition):如果condition参数的计算结果为False,则停止脚本执行,否则继续执行脚本. 2.show_progress(frac,sec):frac表示进度完成的数值,sec表示整个过程的总秒数.主要用与显示UI上的进度条. 3.for

汇编基本语法简介

转载 http://www.360doc.com/content/10/0926/12/1317564_56492037.shtml 汇编基本语法简介在 AT&T 汇编格式中,寄存器名要加上 '%' 作为前缀:而在 Intel 汇编格式中,寄存器名不需要加前缀.例如:AT&T 格式 Intel 格式 pushl %eax push eax 在 AT&T 汇编格式中,用 '$' 前缀表示一个立即操作数:而在 Intel 汇编格式中,立即数的表示不用带任何前缀.例如:AT&T

【ABAP系列】SAP ABAP7.40新语法简介第一篇

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简介第一篇 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 SAP的系统不断的更新 7.40已经出来很久了,一直忙着没有更新7.40新语法内容 慢慢写点新语法的相关内容 首先说一下7.40的特点及简介 1.ABAP 7.40是AS ABAP 7.31(也称为ABAP 7.

Perl 认识简介

Perl简介 Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl 是高级.通用.直译式.动态的程序语言. Perl 最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表. Perl 借用了C.sed.awk.shell脚本以及很多其他编程语言的特性. Perl 最重要的特性是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN. Perl,一种功能丰富

perl 语法速查

同时学perl.python和shell脚本会很容易将它们的语法搞混,本文主要是一个个人的总结,方便要用时的查询. perl基本语法.安装.帮助文档 文件头格式: #!/usr/bin/perl use strict; use warnings; 运行perl脚本: #调用perl程序 perl test.pl #可执行脚本 chmod 755 test.pl ./test.pl 基本读写: #键盘输入 $a = <STDIN>; chomp($a); print $a; #文件输入 open

shell语法简介

一.基本语法 1.1.shell文件开头 shell文件必须以下面的行开始(必须方在文件的第一行):  #!/bin/sh  符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序.  当编辑好脚本时,如果要执行该脚本,还必须使其可执行.  要使脚本可执行: 运行chmod +x filename 这样才能用./filename 来运行 1.2 注释  在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您在程序中使用注释