perl基础语法
- 格式:doc
- 大小:82.00 KB
- 文档页数:13
Perl的经典用法<编者按:本月的专栏文章将介绍一些Perl的经典用法,以便帮助你创建短小精悍,可靠性更高的程序>perl复制文件夹use File::Copy qw(cp);cp"/dira/dfsdf","/dirb/sdfsdf/dddddd";我用system('cp source target'),如果我把程序移植到WINDOWS能否正确运行?use File::Copy;copy($original,$new_copy)or die"Copy failed:$!";学Perl有几本书要常备:1.Programming Perl2.Perl Cookbook3.Perl FAQ打印数据的方法:一:print"@array\n";二:for$row(@array){print"@$row\n";}三:for$row(0..$#array){print"row$row is:@{$geno_sample[$row]}\n";}用Open()函数打开文件打开文件的常用方法是:open(FH,"<$filename")or die"Couldn't open$filename for reading:$!";open()函数通常带有两个参数,第一个为文件句柄,用于指向打开的文件,第二个参数是文件名及模式(文件的打开模式)的混合体,如果文件被成功打开,open()函数返回true,否则为false。
我们用“or”来测试该条件。
上述代码中的模式由小于字符(<)来表示。
如果文件不存在,open()将返回false。
此时,你可以读文件句柄,但不可以写。
大于字符表示写。
如果文件不存在,就会被创建。
如果文件存在,文件被清除,以前的数据将会丢失。
perl基本语法Perl 基本语法by Jian Lee最近在研究openSUSE 的OBS (编译系统),其中很多部分用到Perl。
而且自己也感到有必要学点Perl,当有一点其他程序语言的基础,再学一门语言,入门还是非常简单的。
Perl 在 GNU/Linux 上应用如此广泛,很多地方替换 shell 脚本会更灵活优秀高效,学习它也很有必要。
本文是学习时的笔记,多是语法使用示例,没有什么说明。
拟研究 OBS 时,依据某个应用再写一篇 Perl 应用教程。
标量数字字符串数字和字符串之间的自动转换Perl 内嵌的警告标量变量print 输出if 控制结构Boolean 值用户的输入 <STDIN>chomp 操作while 控制结构undef 值defined 函数列表和数组qw 简写列表赋值pop 和 push 操作shift 和 unshift 操作字符串中引用数组foreach 控制结构最常用的默认变量: $_ reverse 操作sort 操作标量和列表上下文子程序使用 sub 定义子程序调用子程序参数my 变量使用 strict Pragma省略 &输入和输出从标准输入设备输入从 <> 输入调用参数输出到标准输出设备使用 printf 格式化输出数组和 printf句柄(即文件描述符)文件句柄的打开Bad 文件句柄关闭文件句柄严重错误和 die使用文件句柄哈希什么是哈希哈希元素的存取哈希函数正则表达式简单的模式正则表达式的应用使用 m// 匹配可选的修饰符锚定匹配变量使用正则表达式处理文件使用 s/// 进行替换split 操作join 函数列表上下文中的 m//更强大的正则表达式更多控制结构unless 控制结构until 控制结构表达式修饰符The Naked Block 控制结构elsif 语句自增和自减 (同C)for 控制结构 (同C)循环控制逻辑操作符 && 和 ||文件校验文件检测操作stat 和 lstat 函数localtime 函数位操作目录操作在目录树上移动GlobbingGlobbing 的替换语法目录句柄删除文件 unlink重命名文件链接文件创建和删除目录修改权限改变所有者改变时间戳字符串和排序使用索引寻找子串使用 substr 操作子串使用 sprintf 格式化数据进程管理system 函数exec 函数环境变量使用反引号得到输出像文件句柄一样处理进程fork 函数发送和接受信号Perl 模块查找安装模块使用简单的模块一些高级的 Perl 技术利用 eval 捕捉错误标量标量是Perl 中最简单的数据类型。
perl脚本基础总结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; #将⼀个数组拷贝到另⼀个数组⾥。
1 基本输入输出在 BASH 脚本程序中,我们用 read var 来实现从键盘的输入,用 echo $var 来实现输出。
那么在 Perl 中将有一点变化。
Perl 中将标准输入用关键词表示;标准输出用表示,标准错误输出用表示。
故而从标准输入读取数据可以写成:$var=; # 读取一行输入,并存入变量 $var 中。
@var=; # 读取多行输入,并存入数组 @var 中。
在 Perl 语言中,变量 $_ 是许多操作符的缺省变量。
因此如果需要读入许多行并对每行分别处理一般这样写:while($_=){chop($_); # chop 调用用于去掉 $_ 变量中的最后一个字符(换行符)。
# 处理$_(每一行)}或者可以简写为:while(){chop; # 等同于chop($_)# 处理$_(每一行)}如果 <> 括号之间没有任何字符,则表示从命令行所指示的文件中读取数据,看下面这个例子(read.pl):#!/usr/bin/perl;while(<>){print $_;}如果在命令行输入 $ perl read.pl read.pl 。
这个程序将在屏幕上打印出文件 read.pl 的每一行。
在前面的例子中我们已经看见,Perl 语言中向标准输出输出数据可以用 print 语句。
我们在 print 语句中可以输出多个变量,变量之间用 "," 分隔开来。
如下面的例子:print 3,45*2,"hello",2+2;上面的输出语句将给出 "390hello4" 的输出结果。
除了 print 语句以外,Perl 中还提供了一个 printf 语句用于标准输出,不过 printf 更接近于 C 语言的 printf 函数,可以进行格式化的输出,如:printf "%10s% 8d%8.2f\n",$a,$b,$c;printf("%10s% 8d%8.2f\n",$a,$b,$c); # 加上括号的 C 语言写法也是可以的。
Perl语法中Perl运算符⽤法指南1.Perl运算符1.1 算数运算符 Perl固然在变量与数据范例都和C⼤不不异,然⽽它的运算符和C险些不异,除了C的范例转换运算符type,指针引⽤运算符*ptr和布局成员选择符,其他C的运算符险些完全呈现在Perl⾥,Perl新增了⼏个新运算符,好⽐在字符处置⽅⾯.◆Perl到今朝撑持的算数运算符有⼀些⼏种:+加法运算符-减法运算符*乘运算符/除运算符(只对浮点数运算)%取模运算符(只对整数运算)下⾯给出Perl算数运算的⼀些实例:$x=2.5;$y=3;print($x+2*$y);print(7/$y);printint(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.1251.2 Perl语法之位运算符位运算符对⼆进制表达式的整数情势举⾏处置,运算成果为整数.若是位运算符的操纵数是字符串或分数,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)1.3Perl语法之⽐⼒运算符 ⽐⼒运算符的功效是⽐⼒两个操纵数的值.Perl在举⾏⽐⼒运算前,会先将字符操纵数转换为数字.Perl⽤专门的字符串⽐⼒运算符对纯字符举⾏表运算.1.4Perl语法之逻辑运算符逻辑运算符测试布尔表达式的值,其成果为真或假.Perl以为逻辑运算符的每个操纵数都为布尔值(即真或假).Perl的逻辑运算符包罗:||逻辑或运算符;&&逻辑与运算符.Perl按从左到右的挨次计较逻辑表达式.当逻辑或运算符的⼀个操纵数为真,⼤概当逻辑与运算符的⼀个操纵数为假时,Perl 将停⽌逻辑表达式的计较.Perl操纵这种短回路计值快速计较表达式的值.是以,这两个运算符也叫短回路AND和短回路OR.!负运算符:前提运算符,挨次计值符运算符!否认操纵数的布尔值,相称于逻辑⾮.?:前提运算符,有3个操纵数,表达情势为:condition?true-result:false-result$access=($usereq'流云'?'root':'guest');挨次运算符(,)从严酷意义上讲并不是逻辑运算符,由于它并不查抄操纵数的真假.Perl从左到右的计较逗号运算符,并返回最右边的操纵数,都好运算符是从C连续出来的,详细利⽤可以参考C⾥的⽤法,这⾥我就不累述了.1.5Perl语法之字符运算符因为Perl⾃⼰是为⽂本处置开辟的.是以,它增添很多新的字符串运算符.Perl的字符串运算符包罗:.字符毗连运算符x字符串复制运算符=~将⼀个变量绑定到模式⽴室!~将⼀个变量绑定到模式⽴室,取⾮前两个运算符⽐⼒简略.此刻看看例⼦:print'C'.'a'.'l'x2;#输出成果将是:Call;后两个运算符⾸要⽤于模式⽴室,今后将会有关于模式⽴室的详细解说,这⾥就未⼏说了,我们来看看它们的例⼦,以领会它们的感化:$text='本⽇下⾬了';print($text=~/下⾬/)?'本⽇下⾬了':'本⽇没下⾬';我们看到的例⼦可以发明是否变量中是否包罗我们所必要的字符串.1.6Perl语法之赋值运算符赋值运算符和C说话的赋值运算符差未⼏,以下是各类赋值运算符:=+=-=*=/=%=|=&=^=~=<<=>>=**==.=x=1.7Perl语法之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)=@color;Perl的赋值运算符对表举⾏处置时,可以不合错误整个表举⾏处置,⽽只针对表的某⼀个⼤概⼏个元素举⾏赋值:@times[2,5,9]=(20,40,10);($arg1,$arg2,@reset)=@ARGV;1.8Perl语法之表运算符 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)怎么样?很便利吧!1.9Perl语法之⽂件运算符Perl⼤⼤扩展了⽂件处置运算符.Perl⾄少有27个运算符在不打开⽂件的环境下,可以或许测试⽂件的信息,可是很不幸,因为Perl在最初是UNIX的东西,以是绝⼤⼤都的运算符在我们风⾏的平台上:WIN9X/NT体系⽆法利⽤.但万幸的是不是全数另有4个运算符绝对可⽤,并且功效不错哦!⼀下便是那4个运算符:-d测试⽂件是不是⼀个⽬次;-e测试⽂件是否存在;-s测试⽂件的巨细;-w测试⽂件是否是可写的;前两个运算符返回的是布尔值(即真或假),第3个运算符返回⽂件的巨细(以字节作为返回体例).下⾯是利⽤⽅式:复制代码代码如下:if(-e'Perl.exe'){print'Filesizeis:'-s'Perl.exe';}else{print'Can\'tfindPerl.exe\n';}(-w'SomeFile')||die"CannotwritetoSomeFile\n";。
perl index用法Perl是一种通用的脚本语言,被广泛应用于Web开发、系统管理和数据处理等领域。
在Perl中,索引(index)是一种常用的字符串处理函数,用于查找一个子字符串在另一个字符串中的位置。
索引函数的基本语法如下:```index($string, $substring)```其中,`$string`表示待搜索的字符串,`$substring`表示要查找的子字符串。
索引函数会返回子字符串在字符串中第一次出现的位置,如果找不到则返回-1。
下面将详细介绍Perl索引函数的用法及相关注意事项。
## 1. 简单示例让我们通过一个简单的示例来演示索引函数的用法。
假设我们有一个字符串`$str = "Hello, Perl!"`,我们想要查找子字符串`"Perl"`在该字符串中的位置。
我们可以使用索引函数来实现这个功能:```my $str = "Hello, Perl!";my $substring = "Perl";my $index = index($str, $substring);print "子字符串的位置为:$index\n";```运行上述代码,输出结果为:```子字符串的位置为:7```从输出结果可以看出,子字符串`"Perl"`在字符串`"Hello, Perl!"`中的位置为7。
## 2. 多次出现的情况索引函数默认只返回子字符串第一次出现的位置。
如果子字符串在字符串中多次出现,我们可以通过使用循环来找出所有的位置。
```my $str = "Hello, Perl! Perl is awesome!";my $substring = "Perl";my $index = index($str, $substring);while ($index != -1) {print "子字符串的位置为:$index\n";$index = index($str, $substring, $index + 1);}```运行上述代码,输出结果为:```子字符串的位置为:7子字符串的位置为:15```从输出结果可以看出,子字符串`"Perl"`在字符串`"Hello, Perl! Perl is awesome!"`中分别出现在位置7和15。
perl -ne if语句Perl是一种功能强大的脚本语言,具有灵活性和易用性。
其中,if 语句是Perl中常用的控制结构之一,用于根据条件来执行不同的操作。
下面将列举一些关于Perl中if语句的使用场景和示例。
1. 判断文件是否存在在Perl中,可以使用if语句来判断文件是否存在,进而执行相应的操作。
例如:```perlif (-e "file.txt") {print "文件存在";} else {print "文件不存在";}```上述代码中,如果当前目录下存在名为file.txt的文件,则输出"文件存在";否则,输出"文件不存在"。
2. 判断字符串是否为空在Perl中,可以使用if语句来判断字符串是否为空。
例如:```perlmy $str = "Hello";if ($str) {print "字符串非空";} else {print "字符串为空";}```上述代码中,如果变量$str的值非空,则输出"字符串非空";否则,输出"字符串为空"。
3. 判断数字大小关系在Perl中,可以使用if语句来比较数字的大小关系。
例如:```perlmy $num1 = 10;my $num2 = 20;if ($num1 < $num2) {print "$num1 小于 $num2";} elsif ($num1 > $num2) {print "$num1 大于 $num2";} else {print "$num1 等于 $num2";}```上述代码中,根据$num1和$num2的大小关系,输出相应的提示信息。
4. 判断数组是否为空在Perl中,可以使用if语句来判断数组是否为空。
perl循环语句在Perl中,循环语句是控制程序重复执行操作的基本语法之一。
主要有for、while、do-while、foreach等循环语句,下面就来介绍一下它们的使用方法。
1、for循环for循环语法格式如下:for (初始化; 条件; 循环操作) {# 循环体}其中,初始化表示循环开始前需要执行的操作,条件为循环执行的条件,循环操作为每次循环后需要执行的操作。
示例:for ($i = 0; $i < 10; $i++) {print '$i';}2、while循环while循环语法格式如下:while (条件) {# 循环体}其中,条件为循环执行的条件。
示例:$i = 0;while ($i < 10) {print '$i';$i++;}3、do-while循环do-while循环语法格式如下: do {# 循环体} while (条件);其中,条件为循环执行的条件。
示例:$i = 0;do {print '$i';$i++;} while ($i < 10);4、foreach循环foreach循环语法格式如下:foreach $var (列表) {# 循环体}其中,列表为需要循环的值的列表,$var为每次循环中需要处理的变量。
示例:@arr = (1, 2, 3, 4, 5);foreach $num (@arr) {print '$num';}以上就是Perl中循环语句的使用方法,可以根据实际情况选择不同的循环语句来实现程序中的重复操作。
perl语言基本命令Perl语言是一种功能强大的脚本语言,可以用于处理文本、执行系统命令以及开发Web应用等。
本文将介绍一些Perl语言的基本命令和用法。
一、输出命令1. print:用于输出字符串或变量的值。
例如:```print "Hello, Perl!\n";```2. say:与print类似,但会自动换行。
例如:```say "Hello, Perl!";```3. printf:按照指定格式输出字符串或变量的值。
例如:```my $name = "Alice";my $age = 20;printf "Name: %s, Age: %d\n", $name, $age;```二、变量命令1. my:用于声明一个局部变量。
例如:```my $name = "Bob";```2. our:用于声明一个全局变量。
例如:```our $count = 0;```3. scalar:将数组或哈希转换为标量。
例如:```my @numbers = (1, 2, 3);my $count = scalar @numbers;```4. chomp:去除字符串末尾的换行符。
例如:```my $str = "Hello, Perl!\n";chomp $str;```三、输入命令1. <STDIN>:用于从标准输入读取用户输入的数据。
例如:```print "Please enter your name: ";my $name = <STDIN>;chomp $name;print "Hello, $name!\n";```2. getc:从标准输入读取一个字符。
例如:```print "Please enter a character: ";my $char = getc;print "You entered: $char\n";```四、控制流命令1. if-else:用于条件判断。
一.数据类型(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)求幂(**)结果不能超出数的范围。
当指数为小数时,底数不能为负数,例如:25**1.5=125,(-25)**1.5=?(不成立)(2)取余(%)操作数为整数,否则要截取。
第二个数不能为0(因为除数不能为0)(3)负(-)-$a=$a*(-1)此外,注意当一个字符串参加运算,需要转化为整数时,如果不能转化为整数则值为0。
例如:'2'+1=3,'a'+1=12、数字比较运算符<(小于)、=(等于)、>(大于)、==(等于)、<=(小于等于)、>=(大于等于)、!=(不等于)、<=>(比较)(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;11、操作符优先级别(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 ArrayPerl数组变量和列表的概念,列表是包含在括号里的一序列的值,可以为任何数值,也可为空,并且列表存贮于Perl数组变量中,与简单变量不同,Perl数组变量以字符"@"打头。
列表可以为任何数值,也可为空例如:(1,5.3,"hello",2) (17,$var,"astring") (17,26<<2) (17,$var1+$var2) ($value,"Theansweris$value") 空列表:()。
注:只含有一个数值的列表如:(43.2)与该数值本身即:43.2是不同的,但它们可以互相转化或赋值。
列表存储于数组中: @array=(1,2,3);注:(1)Perl数组变量创建时初始值为空列表:()。
(2)因为PERL用@和$来区分Perl数组变量和简单变量,所以同一个名字可以同时用于Perl数组变量和简单变量例如:$var=1; @var=(11,27.1,"astring"); 但这样很容易混淆,故不推荐。
1、Perl数组的存取(1)对Perl数组中的值通过下标存取,第一个元素下标为0。
试图访问不存在的Perl数组元素,则结果为NULL,但如果给超出Perl数组大小的元素赋值,则Perl数组自动增长,原来没有的元素值为NULL。
例如:@array=(1,2,3,4);$scalar=$array[0];$array[3]=5; #now @array is (1,2,3,5)$scalar=$array[4]; #now $scalar=null;$array[6]=17; #now @array is (1,2,3,5,"","",17)(2)Perl数组间拷贝, @result=@original;(3)用Perl数组给列表赋值例如:@list1=(2,3,4);@list2=(1,@list1,5); #@list2=(1,2,3,4,5)(4)Perl数组对简单变量的赋值例如:@array=(5,7,11);($var1,$var2)=@array; #$var1=5, $var2=7, 11被忽略@array=(5,7);($var1,$var2,$var3)=@array; #$var1=5,$var2=7,$var3=""(null)(5)从标准输入(STDIN)给变量赋值例如:$var=<STDIN>;@array=<STDIN>; #^D为结束输入的符号2、字符串中的方括号和变量替换"$var[0]"为Perl数组@var的第一个元素。