• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >perl > perl 基本语法介绍

perl 基本语法介绍

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了perl基本语法,perl脚本语法,perl 语法,perl代码中chop语法,perl语言编程实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一.数据类型(Data type):

Perl 的数据类型大致分为四种:Scalar(变量)、Scalar Array(数组)、Hash Array(散列)、References(指针),看起来虽少但用起来却绰绰有余。尤其在写Perl程序时可以不必事先宣告变量,这一点对刚学程序语言的人甚为方便,不过为了以后程序除错和维护方便,我建议你还是养成事先声明变量的习惯比较好。

1 Scalar(纯量变量):

纯量变量是Perl里最基本的一种数据型态,它可以代表一个字符、字符串、整数、甚至浮点数,而Perl把它们都看成是一样的东东! 你甚至可以混着用,不可思议吧。例如:
# 井字号开头的后面都是批注。
# 纯量变数以$开头。
# my 是一种宣告变量的方式,它可以使变量区域化。
# 宣告变量时若不加 my 或 local 则Perl会把它当作全域变量使用。
# 习惯上,我们会将字符串用双引号括起来,而数值就不用加引号。
my $x="abc";
my $x=123;
my $x=4.56;

1-1 常用的操作运算符

1)、算术运算符
+(加)、-(减)、*(乘)、/(除)、**(幂)、%(余)、-(负)
(1)求幂(**) 结果不能超出数的范围。当指数为小数时,底数不能为负数,例如:25**1.5=125,(-25)**1.5=?(不成立)
(2)取余(%) 操作数为整数,否则要截取。第二个数不能为0(因为除数不能为0)
(3)负(-) -$a=$a*(-1)
此外,注意当一个字符串参加运算,需要转化为整数时,如果不能转化为整数则值为0。例如:'2'+1=3,'a'+1=1

2)、数字比较运算符
<(小于)、=(等于)、>(大于)、==(等于)、<=(小于等于)、>=(大于等于)、!=(不等于)、<=>(比较)
(1)==:比较运算,比较的结果为真或非零,假或零
(2)<=>:比较运算 例如:$a<=>$b,当$a>$b时,值为1;当$a<$b时,值为-1;当$a==$b时,值为0
(3)自动把操作数转化为整数,不能转化为整数则为0
(4)浮点数不精确,不要把值相近的数比较,否则得到的结果是出乎意料的

3)、字符串比较运算符
lt(小于)、gt(大于)、eq(等于)、le(小于等于)、ge(大于等于)、ne(等于)、cmp(比较)
(1)字符串的比较原则:按照字母表的顺序比较,数字<大写字母<小写字母(a小—z大)
(2)字符串比较的次序:字符串从左到右比较。'azz'<‘bc'(即:首先a与b进行比较,然后z与c进行比较)
(3)当一个串是另一个的前缀时,长度长的为大。例如:dog<doghouse
(4)字符串可以从右向左进位,且是字母数字分别进行
(5)自动把操作数转化为字符串。123 lt 45 => '123' lt '45'
(6)cmp等同于<=>,结果为-1,0, 1
例如:$str1=”a”,$str2=”a“,则print ($str1 cmp $str2) ==> 0
例如:$str1=”a”,$str2=”b”,则print($str1 cmp $str2)===> -1
例如:$str1=”b”,$str2=”a”,则print($str1 cmp $str2)===> 1
(7)空串,0,Undef,这三种情况都为假
例如:如下比较的结果
35 != 30+5     #假
35 == 35.0     #真
'35' eq '35.0'   #假(当成字符串来比较)
'fred'  lt  'barney'  #假
'fred'  lt  'free'      #假
'fred'  eq "fred"    #真
'fred'  eq  "Fred"  #假
'   '  gt  ' '  #真

4)、字符串连接(.)、字符/字符串重复(x)
(1)连接( “.“),例如:$a=‘a'.'b';  =>‘ab'
在print时可以直接写print $a$b=>print $a.$b; 但是这两者的原理是不一样的
(2)重复( “x” ),注意:前后有空格(目的:为了和变量名分开),例如:‘a'  x  5=‘aaaaa',若重复次数<1,则返回空串
例如:"5" x 4,即为:"5555"
例如:"love" x (4+1),即为:"lovelovelovelovelove"
例如:"4.8" x 4,即为:"4.84.84.84.8"
例如:6.1 x 3,即为:"6.16.16.1"
即:左边是一个字符串,右边是该字符串出现的次数

5)、逻辑运算符(&&(and)(与)、||(or)(或)、!(not)(非)、xor(异或)
(1)先算左边的值,后算右边的值
(2)&&和and的优先级不同,但除非特殊情况,很难有区别

6)、位操作运算符
&(按位与)、 |(按位或)、 ~(按位非)、 ^(按位异或)、 <<(左移)、>>(右移)
(1)操作数为二进制整数,如果是小数则截取为整数
(2)<<左移,移开后空位补0,值为原数值的2*N倍(例如:z<<4,则z=z*(2的4次方))
(3)>>右移,首位补0,值为原值一半(并取整)(例如:z>>4,则z=z/(2的的次方))

7)、赋值运算符
=、+=、-=、*=、/=、%=、**=、&=、|=、^=、.=
(1)$a+=1=>$a=$a+1
(2)可以连等$a=$b=3;=>$a=3;$b=3;
(3)混用 ($a=$b)+=3;=>$a=$b;$a=$a+3;(不建议使用)

8)、自增(++)、自减(--)
(1)不要在变量两边都使用此种操作符:++$var--
(2)不要在变量自增/减后在同一表达式中再次使用:$var2 = $var1 + ++$var1;
(3)可用于字符串的自增,当z、Z、9时进位。$a=‘caz'; $a++; ==> $a=‘cba';
(4)不能用于字符串的自减,当$a--时,按数字运算,字符先转化为0再自减
(5)如果字符串含有非字母数字符号,或数字位于字母中时,自增也先化为0再自增
例如:$a=‘ab*c'; $a++;  ==> $a=1;
例如:$a=‘ab5c'; $a++;  ==> $a=1;
(6)预增$b=++$a,$a先自增再赋值,后增$b=$a++;$a先赋值再自增;反之,同理
例如:$a=1; $b=++$a; =>$a=2,$b=2;
例如:$a=1; $b=$a++; =>$a=2,$b=1;
(7)只能用于单一变量,不能对运算后的变量进行。例如:($a+$b)++

9)、逗号(相当于:将两条语句写在一行)
适用范围: 只有当两个语句关联紧密时才使用
例如:$a+=1,$b=$a;  => $a+=1; $b=$a;
例如:$a="ab5c", print $a."\n";

10、条件运算符
条件? 真:假
(1)三个操作数:先对条件表达式运算,为真时执行:的左边的运算,为假时执行:的右边的运算
例如:$result = $var == 0 ? 14 : 7;
(2)用于简单的条件
(3)条件表达式用在=的左边
例如:$condvar == 43 ? $var1 : $var2 = 14;
例如:$condvar == 43 ? $var1 = 14 : $var2 = 14;

三、操作符优先级别( precedence--优先级)
当一个表达式中出现几种不同的运算符,哪个先计算,哪个后计算
例如:$condvar == 43 ? $var1 : $var2 = 14;(先算条件,后算赋值)
例如:$x = $a == $b;(先算关系,后算赋值)
例如:$x == 0 || $y / $x > 5;(先算除,接着算大于、接着算等于,最后算关系或)
例如:$result = 11 * 2 + 6 ** 2 << 2;(先算幂,再算乘,接着算加,再接着算左移,最后算赋值)
(1)一般的优先级如下:自增自减最高,单操作数高于多操作数,数字运算 > 比较运算(数字比较与字符串比较) > 位运算 > 赋值运算 > 逻辑运算
(2)数字运算:幂 > */>+-
(3)比较运算: <(小于)、>(大于)高于(== 与!=)

2 Scalar Array:
Perl数组变量和列表的概念,列表是包含在括号里的一序列的值,可以为任何数值,也可为空,并且列表存贮于Perl数组变量中,与简单变量不同,Perl数组变量以字符"@"打头。

Perl数组变量和列表

一、列表

列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:

(1,5.3,"hello",2),空列表:()。

注:只含有一个数值的列表(如:(43.2))与该数值本身(即:43.2)是不同的,但它们可

以互相转化或赋值。

列表例:

(17,$var,"astring")

(17,26<<2)

(17,$var1+$var2)

($value,"Theansweris$value")

二、Perl数组--列表的存贮

列表存贮于Perl数组变量中,与简单变量不同,Perl数组变量以字符"@"打头,如:

@array=(1,2,3);

注:

(1)Perl数组变量创建时初始值为空列表:()。

(2)因为PERL用@和$来区分Perl数组变量和简单变量,所以同一个名字可以同时用于Perl

数组变量和简单变量,如:

$var=1;

@var=(11,27.1,"astring");

但这样很容易混淆,故不推荐。

1、Perl数组的存取

◆对Perl数组中的值通过下标存取,第一个元素下标为0。试图访问不存在的Perl数组元

素,则结果为NULL,但如果给超出Perl数组大小的元素赋值,则Perl数组自动增长,原

来没有的元素值为NULL。如:

@array=(1,2,3,4);

$scalar=$array[0];

$array[3]=5;#now@arrayis(1,2,3,5)

$scalar=$array[4];#now$scalar=null;

$array[6]=17;#now@arrayis(1,2,3,5,"","",17)

◆Perl数组间拷贝

@result=@original;

◆用Perl数组给列表赋值

@list1=(2,3,4);

@list2=(1,@list1,5);#@list2=(1,2,3,4,5)

◆Perl数组对简单变量的赋值

(1)@array=(5,7,11);

($var1,$var2)=@array;#$var1=5,$var2=7,11被忽略

(2)@array=(5,7);

($var1,$var2,$var3)=@array;#$var1=5,$var2

您可能想查找下面的文章:

  • Perl语法之解析Perl变量使用
  • Perl语法中Perl运算符用法指南
  • perl 基本语法介绍

相关文章

  • perl操作MongoDB报错undefined symbol: HeUTF8解决方法
  • 7个perl数组高级操作技巧分享
  • perl中单行注释和多行注释使用介绍
  • Perl中的文件读写学习笔记
  • cpanm安装及Perl模块安装教程
  • using Net::SSH2 shell 的二个方法
  • perl中srand()与time的函数使用方法介绍
  • 一个perl扩展正则表达式代码分析
  • python urllib中的编码处理示例
  • 有关perl的内置特殊变量介绍

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 不错的mod_perl编程的简单应用实例介绍
    • 使用 use re debug 查看正则表达式的匹配过程
    • 用Perl操作Excel文档的实例代码
    • Perl使用Tesseract-OCR实现验证码识别教程
    • perl生成特定碱基比例的随机序列的代码
    • perl产生随机数实现代码
    • Perl中使用MIME::Lite发送邮件实例
    • Perl中的文件读写学习笔记
    • 服务器自动删除文件的脚本
    • Perl List::Util模块使用实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有