perl零基础教程.docx

上传人:b****6 文档编号:7282518 上传时间:2023-01-22 格式:DOCX 页数:33 大小:47.60KB
下载 相关 举报
perl零基础教程.docx_第1页
第1页 / 共33页
perl零基础教程.docx_第2页
第2页 / 共33页
perl零基础教程.docx_第3页
第3页 / 共33页
perl零基础教程.docx_第4页
第4页 / 共33页
perl零基础教程.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

perl零基础教程.docx

《perl零基础教程.docx》由会员分享,可在线阅读,更多相关《perl零基础教程.docx(33页珍藏版)》请在冰豆网上搜索。

perl零基础教程.docx

perl零基础教程

perl教程

第一节:

基本上,简单变量就是一个数据单元,这个单元可以是数字或字符串。

一、整型

1、整型

PERL最常用的简单变量,由于其与其它语言基本相同,不再赘述。

例:

$x=12345;

if(1217+116==1333){

#statementblockgoeshere

}

整型的限制:

PERL实际上把整数存在你的计算机中的浮点寄存器中,所以实际上被当作浮点数看待。

在多数计算机中,浮点寄存器可以存贮约16位数字,长于此的被丢弃。

整数实为浮点数的特例。

2、8进制和16进制数

8进制以0打头,16进制以0x打头。

例:

$var1=047;(等于十进制的39)

$var2=0x1f;(等于十进制的31)

二、浮点数

如11.4、-0.3、.3、3.、54.1e+02、5.41e03

浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意。

指数的范围通常为-309到+308。

例:

#!

/usr/local/bin/perl

$value=9.01e+21+0.01-9.01e+21;

print("firstvalueis",$value,"\n");

$value=9.01e+21-9.01e+21+0.01;

print("secondvalueis",$value,"\n");

---------------------------------------------------------

$program3_3

firstvalueis0

secondvalueis0.01

三、字符串

惯用C的程序员要注意,在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。

.双引号内的字符串中支持简单变量替换,例如:

$number=11;

$text="Thistextcontainsthenumber$number.";

则$text的内容为:

"Thistextcontainsthenumber11."

.双引号内的字符串中支持转义字符

Table3.1.Escapesequencesinstrings.

EscapeSequenceDescription

\aBell(beep)

\bBackspace

\cnTheCtrl+ncharacter

\eEscape

\EEndstheeffectof\L,\Uor\Q

\fFormfeed

\lForcesthenextletterintolowercase

\LAllfollowinglettersarelowercase

\nNewline

\rCarriagereturn

\QDonotlookforspecialpatterncharacters

\tTab

\uForcenextletterintouppercase

\UAllfollowinglettersareuppercase

\vVerticaltab

\L、\U、\Q功能可以由\E关闭掉,如:

$a="T\LHISISA\ESTRING";#sameas"ThisisaSTRING"

.要在字符串中包含双引号或反斜线,则在其前加一个反斜线,反斜线还可以取消变量替换,如:

$res="Aquote\"andAbackslash\\";

$result=14;

print("Thevalueof\$resultis$result.\n")的结果为:

Thevalueof$resultis14.

.可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如:

$result="\377";#thisisthecharacter255,orEOF

$result="\xff";#thisisalso255

.单引号字符串

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

单引号另一个特性是可以跨多行,如:

$text='Thisistwo

linesoftext

';

与下句等效:

$text="Thisistwo\nlinesoftext\n";

.字符串和数值的互相转换

例1:

$string="43";

$number=28;

$result=$string+$number;#$result=71

若字符串中含有非数字的字符,则从左起至第一个非数字的字符,如:

$result="hello"*5;#$result=0

$result="12a34"+1;#$result=13

.变量初始值

在PERL中,所有的简单变量都有缺省初始值:

"",即空字符。

但是建议给所有变量赋初值,否则当程序变得大而复杂后,很容易出现不可预料且很难调试的错误。

第二节:

一、算术操作符:

+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)

(1)乘幂的基数不能为负,如(-5)**2.5#error;

(2)乘幂结果不能超出计算机表示的限制,如10**999999#error

(3)取余的操作数如不是整数,四舍五入成整数后运算;运算符右侧不能为零

(4)单目负可用于变量:

-$y;#等效于$y*-1

二、整数比较操作符

 

Table3.1.整数比较操作符

操作符描述

<小于

>大于

==等于

<=小于等于

>=大于等于

!

=不等于

<=>比较,返回1,0,or-1

操作符<=>结果为:

0-两个值相等

1-第一个值大

1-第二个值大

三、字符串比较操作符

Table3.2.字符串比较操作符

操作符描述 

lt小于 

gt大于 

eq等于 

le小于等于 

ge大于等于 

ne不等于 

cmp比较,返回1,0,or-1 

四、逻辑操作符

逻辑或:

$a||$b或$aor$b

逻辑与:

$a&&$b或$aand$b

逻辑非:

!

$a或not$a

逻辑异或:

$axor$b

五、位操作符

位与:

&

位或:

|

位非:

~

位异或:

^

左移:

$x<<1

右移:

$x>>2

注:

不要将&用于负整数,因为PERL将会把它们转化为无符号数。

六、赋值操作符

Table3.3.赋值操作符

操作符描述

=Assignmentonly

+=Additionandassignment

-=Subtractionandassignment

*=Multiplicationandassignment

/=Divisionandassignment

%=Remainderandassignment

**=Exponentiationandassignment

&=BitwiseANDandassignment

|=BitwiseORandassignment

^=BitwiseXORandassignment

Table3.4.赋值操作符例子

表达式等效表达式

$a=1;none(basicassignment)

$a-=1;$a=$a-1;

$a*=2;$a=$a*2;

$a/=2;$a=$a/2;

$a%=2;$a=$a%2;

$a**=2;$a=$a**2;

$a&=2;$a=$a&2;

$a|=2;$a=$a|2;

$a^=2;$a=$a^2;

.=可在一个赋值语句中出现多次,如:

$value1=$value2="astring";

.=作为子表达式

($a=$b)+=3;

等价于

$a=$b;

$a+=3;

但建议不要使用这种方式。

七、自增自减操作符:

++、--(与C++中的用法相同)

.不要在变量两边都使用此种操作符:

++$var--#error

.不要在变量自增/减后在同一表达式中再次使用:

$var2=$var1+++$var1;#error

.在PERL中++可用于字符串,但当结尾字符为'z'、'Z'、'9'时进位,如:

$stringvar="abc";

$stringvar++;#$stringvarcontains"abd"now

$stringvar="aBC";

$stringvar++;#$stringvarcontains"aBD"now

$stringvar="abz";

$stringvar++;#$stringvarnowcontains"aca"

$stringvar="AGZZZ";

$stringvar++;#$stringvarnowcontains"AHAAA"

$stringvar="ab4";

$stringvar++;#$stringvarnowcontains"ab5"

$stringvar="bc999";

$stringvar++;#$stringvarnowcontains"bd000"

.不要使用--,PERL将先将字符串转换为数字再进行自减

$stringvar="abc";

$stringvar--;#$stringvar=-1now

.如果字符串中含有非字母且非数字的字符,或数字位于字母中,则经过++运算前值转换为数字零,因此结果为1,如:

$stringvar="ab*c";

$stringvar++;

$stringvar="ab5c";

$stringvar++;

八、字符串联结和重复操作符

联接:

.

重复:

x

联接且赋值(类似+=):

.=

例:

$newstring="potato"."head";

$newstring="t"x5;

$a="be";

$a.="witched";#$aisnow"bewitched"

九、逗号操作符

其前面的表达式先进行运算,如:

$var1+=1,$var2=$var1;

等价于

$var1+=1;

$var2=$var1;

使用此操作符的唯一理由是提高程序的可读性,将关系密切的两个表达式结合在一起,如:

$val=26;

$result=(++$val,$val+5);#$result=32

注意如果此处没有括号则意义不同:

$val=26;

$result=++$val,$val+5;#$result=27

十、条件操作符

与C中类似,条件?

值1:

值2,当条件为真时取值1,为假时取值2,如:

$result=$var==0?

14:

7;

$result=43+($divisor==0?

0:

$dividend/$divisor);

PERL5中,还可以在赋值式左边使用条件操作符来选择被赋值的变量,如:

$condvar==43?

$var1:

$var2=14;

$condvar==43?

$var1=14:

$var2=14;

十一、操作符的次序

Table3.6.操作符次序

操作符描述

++,--自增,自减

-,~,!

单目

**乘方

=~,!

~模式匹配

*,/,%,x乘,除,取余,重复

+,-,.加,减,联接

<<,>>移位

-e,-r,etc.文件状态

<,<=,>,>=,lt,le,gt,ge不等比较

==,!

=,<=>,eq,ne,cmp相等比较

&位与

|,^位或,位异或

&&逻辑与

||逻辑或

..列表范围

?

and:

条件操作符

=,+=,-=,*=,赋值

andsoon 

逗号操作符

notLow-precedencelogicalNOT

andLow-precedencelogicalAND

or,xorLow-precedencelogicalORandXOR

.操作符结合性(associativity):

Table3.7.操作符结合性

操作符结合性

++,--无

-,~,!

Right-to-left

**Right-to-left

=~,!

~Left-to-right

*,/,%,xLeft-to-right

+,-,.Left-to-right

<<,>>Left-to-right

-e,-r,无

<,<=,>,>=,lt,le,gt,geLeft-to-right

==,!

=,<=>,eq,ne,cmpLeft-to-right

&Left-to-right

|,^Left-to-right

&&Left-to-right

||Left-to-right

..Left-to-right

?

and:

Right-to-left

=,+=,-=,*=,Right-to-left

andsoon 

Left-to-right

notLeft-to-right

andLeft-to-right

or,xorLeft-to-right

建议:

1、当你不确定某操作符是否先执行时,一定要用括号明确之。

2、用多行、空格等方式提高程序的可读性。

第三节:

一、列表

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

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

()。

注:

只含有一个数值的列表(如:

(43.2))与该数值本身(即:

43.2)是不同的,但它们可以互相转化或赋值。

列表例:

(17,$var,"astring")

(17,26<<2)

(17,$var1+$var2)

($value,"Theansweris$value")

二、数组--列表的存贮

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

@array=(1,2,3);

注:

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

()。

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

$var=1;

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

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

1、数组的存取

.对数组中的值通过下标存取,第一个元素下标为0。

试图访问不存在的数组元素,则结果为NULL,但如果给超出数组大小的元素赋值,则数组自动增长,原来没有的元素值为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)

.数组间拷贝

@result=@original;

.用数组给列表赋值

@list1=(2,3,4);

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

.数组对简单变量的赋值

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

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

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

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

.从标准输入(STDIN)给变量赋值

$var=;

@array=;#^D为结束输入的符号

2、字符串中的方括号和变量替换

"$var[0]"为数组@var的第一个元素。

"$var[0]"将字符"["转义,等价于"$var"."[0]",$var被变量替换,[0]保持不变。

"${var}[0]"亦等价于"$var"."[0]"。

"${var}"则取消了大括号的变量替换功能,包含文字:

${var}.

3、列表范围:

(1..10)=(1,2,3,4,5,6,7,8,9,10)

(2,5..7,11)=(2,5,6,7,11)

(3..3)=(3)

.用于实数

(2.1..5.3)=(2.1,3.1,4.1,5.1)

(4.5..1.6)=()

.用于字符串

("aaa".."aad")=("aaa","aab","aac","aad")

@day_of_month=("01".."31")

.可包含变量或表达式

($var1..$var2+5)

.小技巧:

$fred="Fred";

print(("Hello,".$fred."!

n")x2);

其结果为:

Hello,Fred!

Hello,Fred!

4、数组的输出:

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

print(@array,"n");

结果为:

123

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

print("@arrayn");

结果为:

123

5、列表/数组的长度

当数组变量出现在预期简单变量出现的地方,则PERL解释器取其长度。

@array=(1,2,3);

$scalar=@array;#$scalar=3,即@array的长度

($scalar)=@array;#$scalar=1,即@array第一个元素的值

注:

以数组的长度为循环次数可如下编程:

$count=1;

while($count<=@array){

print("element$count:

$array[$count-1]n");

$count++;

}

6、子数组

@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)now

@array[0..3]=(11,22,33,44);#@array=(11,22,33,44,5)now

@array[1,2,3]=@array[3,2,4];#@array=(11,44,33,5,5)now

@array[0..2]=@array[3,4];#@array=(5,5,"",5,5)now

可以用子数组形式来交换元素:

@array[1,2]=@array[2,1];

7、有关数组的库函数

(1)sort--按字符顺序排序

@array=("this","is","a","test");

@array2=sort(@array);#@array2=("a","is","test","this")

@array=(70,100,8);

@array=sort(@array);#@array=(100,70,8)now

(2)reverse--反转数组

@array2=reverse(@array);

@array2=reversesort(@array);

(3)chop--数组去尾

chop的意义是去掉STDIN(键盘)输入字符串时最后一个字符--换行符。

而如果它作用到数组上,则将数组中每一个元素都做如此处理。

@list=("rabbit","12345","quartz");

chop(@list);#@list=("rabbi","1234","quart")now

(4)join/split--连接/拆分

join的第一个参数是连接所用的中间字符,其余则为待连接的字符数组。

$string=join("","this","is","a","string");#结果为"thisisastring"

@list=("words","and");

$string=join(":

:

",@list,"colons");#结果为"words:

:

and:

:

colons"

@array=split(/:

:

/,$string);#@array=("words","and","colons")now

 

第四节:

一、条件判断

if(){

}

elsif(){

}

...

else{

}

二、循环:

1、while循环

while(){

}

2、until循环

until(){

}

3、类C的for循环,如

for($count=1;$count<=5;$count++){

#statementsinsidetheloopgo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1