perl教程.docx
- 文档编号:7136507
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:83
- 大小:84.18KB
perl教程.docx
《perl教程.docx》由会员分享,可在线阅读,更多相关《perl教程.docx(83页珍藏版)》请在冰豆网上搜索。
perl教程
Perl5教程--第一章概述
一、Perl是什么?
Perl是PracticalExtractionandReportLanguage的缩写,它是由LarryWall设计的,并由他不断更新和维护,用于在UNIX环境下编程。
.Perl具有高级语言(如C)的强大能力和灵活性。
事实上,你将看到,它的许多特性是从C语言中借用来的。
.与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。
这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
.Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。
Perl还支持sed到Perl及awd到Perl的翻译器。
简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。
二、Perl在哪里?
Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。
你可以在Internet用匿名FTP免费得到它,如ftp:
//prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz。
安装过程为:
(1)解压:
$gunzipperl-5.004.tar.gz
$tarxvfperl-5.004.tar.gz
(2)配置:
$Configure
(3)编译:
$make
$maketest
$makeinstall
(3)放置:
将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:
$copy
注:
这需要系统管理员权限。
北美
地址
目录
IP地址:
192.94.48.152
目录/pub/outgoing/perl5.0
ftp.cis.ufl.edu
IP地址:
128.227.100.198
目录/pub/perl/src/5.0
IP地址:
192.48.96.9
目录/languages/perl
ftp.khoros.unm.edu
IP地址:
198.59.155.28
目录/pub/perl
ftp.cbi.tamucc.edu
IP地址:
165.95.1.3
目录/pub/duff/Perl
IP地址:
192.245.137.1
目录/pub/perl/sources
genetics.upenn.edu
IP地址:
128.91.200.37
目录/perl5
欧洲
Site
Location
ftp.cs.ruu.nl
IP地址:
131.211.80.17
目录/pub/PERL/perl5.0/src
ftp.funet.fi
IP地址:
128.214.248.6
目录/pub/languages/perl/ports/perl5
ftp.zrz.tu-berlin.de
IP地址:
130.149.4.40
目录/pub/unix/perl
src.doc.ic.ac.uk
IP地址:
146.169.17.5
目录/packages/perl5
澳洲
Site
Location
sungear.mame.mu.oz.au
IP地址:
128.250.209.2
目录/pub/perl/src/5.0
南美
Site
Location
ftp.inf.utfsm.cl
IP地址:
146.83.198.3
目录/pub/gnu
三、运行
用文本编辑器编辑好你的Perl程序,加上可执行属性:
$chmod+x
$./
如果系统提示:
"/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;
print("secondvalueis",$value,"\n");
---------------------------------------------------------
$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
$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中,所有的简单变量都有缺省初始值:
"",即空字符。
但是建议给所有变量赋初值,否则当程序变得大而复杂后,很容易出现不可预料且很难调试的错误。
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;
$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
逗号操作符
not
Low-precedencelogicalNOT
and
Low-precedencelogicalAND
or,xor
Low-precedencelogicalORandXOR
.操作符结合性(associativity):
Table3.7.操作符结合性
操作符
结合性
++,--
无
-,~,!
Right-to-left
**
Right-to-left
=~,!
~
Left-to-right
*,/,%,x
Left-to-right
+,-,.
Left-to-right
<<,>>
Left-to-right
-e,-r,
无
<,<=,>,>=,lt,le,gt,ge
Left-to-right
==,!
=,<=>,eq,ne,cmp
Left-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
not
Left-to-right
and
Left-to-right
or,xor
Left-to-right
建议:
1、当你不确定某操作符是否先执行时,一定要用括号明确之。
2、用多行、空格等方式提高程序的可读性。
Perl5教程--第四章列表和数组变量
一、列表
列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:
(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=
2、字符串中的方括号和变量替换
"$v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- perl 教程