perl教程Word文档格式.docx
《perl教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《perl教程Word文档格式.docx(83页珍藏版)》请在冰豆网上搜索。
目录/perl5
欧洲
Site
Location
ftp.cs.ruu.nl
131.211.80.17
目录/pub/PERL/perl5.0/src
ftp.funet.fi
128.214.248.6
目录/pub/languages/perl/ports/perl5
ftp.zrz.tu-berlin.de
130.149.4.40
目录/pub/unix/perl
src.doc.ic.ac.uk
146.169.17.5
目录/packages/perl5
澳洲
sungear.mame.mu.oz.au
128.250.209.2
南美
ftp.inf.utfsm.cl
146.83.198.3
目录/pub/gnu
三、运行
用文本编辑器编辑好你的Perl程序,加上可执行属性:
$chmod+x<
program>
就可以执行了:
$./<
。
如果系统提示:
"
/usr/local/bin/perlnotfound"
,则说明你没有安装成功,请重新安装。
你的程序的第一行必须为#!
/usr/local/bin/perl(perl所在位置)。
四、注释:
注释的方法为在语句的开头用字符#,如:
#thislineisacomment
建议经常使用注释使你的程序易读,这是好的编程习惯。
Perl5教程--第二章简单变量
基本上,简单变量就是一个数据单元,这个单元可以是数字或字符串。
一、整型
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;
secondvalueis"
---------------------------------------------------------
$program3_3
firstvalueis0
secondvalueis0.01
三、字符串
惯用C的程序员要注意,在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。
.双引号内的字符串中支持简单变量替换,例如:
$number=11;
$text="
Thistextcontainsthenumber$number."
;
则$text的内容为:
Thistextcontainsthenumber11."
.双引号内的字符串中支持转义字符
Table3.1.Escapesequencesinstrings.
EscapeSequence
Description
\a
Bell(beep)
\b
Backspace
\cn
TheCtrl+ncharacter
\e
Escape
\E
Endstheeffectof\L,\Uor\Q
\f
Formfeed
\l
Forcesthenextletterintolowercase
\L
Allfollowinglettersarelowercase
\n
Newline
\r
Carriagereturn
\Q
Donotlookforspecialpatterncharacters
\t
Tab
\u
Forcenextletterintouppercase
\U
Allfollowinglettersareuppercase
\v
Verticaltab
\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
\xff"
#thisisalso255
.单引号字符串
单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包含单引号和反斜线时起作用。
单引号另一个特性是可以跨多行,如:
$text='
Thisistwo
linesoftext
'
与下句等效:
$text="
Thisistwo\nlinesoftext\n"
.字符串和数值的互相转换
例1:
$string="
43"
$number=28;
$result=$string+$number;
#$result=71
若字符串中含有非数字的字符,则从左起至第一个非数字的字符,如:
hello"
*5;
#$result=0
12a34"
+1;
#$result=13
.变量初始值
在PERL中,所有的简单变量都有缺省初始值:
,即空字符。
但是建议给所有变量赋初值,否则当程序变得大而复杂后,很容易出现不可预料且很难调试的错误。
Perl5教程--第三章操作符
一、算术操作符:
+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)
(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;
=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
aBC"
aBD"
abz"
#$stringvarnowcontains"
aca"
AGZZZ"
AHAAA"
ab4"
ab5"
bc999"
bd000"
.不要使用--,PERL将先将字符串转换为数字再进行自减
$stringvar--;
#$stringvar=-1now
.如果字符串中含有非字母且非数字的字符,或数字位于字母中,则经过++运算前值转换为数字零,因此结果为1,如:
ab*c"
ab5c"
八、字符串联结和重复操作符
联接:
.
重复:
x
联接且赋值(类似+=):
.=
例:
$newstring="
potato"
."
head"
t"
x5;
be"
$a.="
witched"
#$aisnow"
bewitched"
九、逗号操作符
其前面的表达式先进行运算,如:
$var1+=1,$var2=$var1;
$var1+=1;
$var2=$var1;
使用此操作符的唯一理由是提高程序的可读性,将关系密切的两个表达式结合在一起,如:
$val=26;
$result=(++$val,$val+5);
#$result=32
注意如果此处没有括号则意义不同:
$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;
$var1=14:
十一、操作符的次序
Table3.6.操作符次序
++,--
自增,自减
-,~,!
单目
**
乘方
=~,!
~
模式匹配
*,/,%,x
乘,除,取余,重复
+,-,.
加,减,联接
>
移位
-e,-r,etc.
文件状态
<
=,>
=,lt,le,gt,ge
不等比较
==,!
=,<
eq,ne,cmp
相等比较
位与
|,^
位或,位异或
逻辑与
||
逻辑或
..
列表范围
?
and:
条件操作符
=,+=,-=,*=,
赋值
andsoon
逗号操作符
not
Low-precedencelogicalNOT
and
Low-precedencelogicalAND
or,xor
Low-precedencelogicalORandXOR
.操作符结合性(associativity):
Table3.7.操作符结合性
结合性
无
Right-to-left
Left-to-right
-e,-r,
建议:
1、当你不确定某操作符是否先执行时,一定要用括号明确之。
2、用多行、空格等方式提高程序的可读性。
Perl5教程--第四章列表和数组变量
一、列表
列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:
(1,5.3,"
2),空列表:
()。
只含有一个数值的列表(如:
(43.2))与该数值本身(即:
43.2)是不同的,但它们可以互相转化或赋值。
列表例:
(17,$var,"
)
(17,26<
2)
(17,$var1+$var2)
($value,"
Theansweris$value"
二、数组--列表的存贮
列表存贮于数组变量中,与简单变量不同,数组变量以字符"
@"
打头,如:
@array=(1,2,3);
(1)数组变量创建时初始值为空列表:
(2)因为PERL用@和$来区分数组变量和简单变量,所以同一个名字可以同时用于数组变量和简单变量,如:
$var=1;
@var=(11,27.1,"
但这样很容易混淆,故不推荐。
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=<
STDIN>
@array=<
#^D为结束输入的符号
2、字符串中的方括号和变量替换
$v