perl零基础教程Word文件下载.docx
- 文档编号:20390036
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:33
- 大小:47.60KB
perl零基础教程Word文件下载.docx
《perl零基础教程Word文件下载.docx》由会员分享,可在线阅读,更多相关《perl零基础教程Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
\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;
Thevalueof\$resultis$result.\n"
)的结果为:
Thevalueof$resultis14.
.可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如:
$result="
\377"
#thisisthecharacter255,orEOF
\xff"
#thisisalso255
.单引号字符串
单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包含单引号和反斜线时起作用。
单引号另一个特性是可以跨多行,如:
$text='
Thisistwo
linesoftext
'
与下句等效:
Thisistwo\nlinesoftext\n"
.字符串和数值的互相转换
例1:
$string="
43"
$number=28;
$result=$string+$number;
#$result=71
若字符串中含有非数字的字符,则从左起至第一个非数字的字符,如:
hello"
*5;
#$result=0
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;
=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
逗号操作符
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
=,+=,-=,*=,Right-to-left
Left-to-right
notLeft-to-right
andLeft-to-right
or,xorLeft-to-right
建议:
1、当你不确定某操作符是否先执行时,一定要用括号明确之。
2、用多行、空格等方式提高程序的可读性。
第三节:
一、列表
列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:
(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、字符串中的方括号和变量替换
$var[0]"
为数组@var的第一个元素。
将字符"
["
转义,等价于"
$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"
)=("
aab"
"
aac"
@day_of_month=("
01"
31"
.可包含变量或表达式
($var1..$var2+5)
.小技巧:
$fred="
Fred"
print(("
Hello,"
.$fred."
n"
)x2);
其结果为:
Hello,Fred!
4、数组的输出:
(1)@array=(1,2,3);
print(@array,"
123
(2)@array=(1,2,3);
@arrayn"
123
5、列表/数组的长度
当数组变量出现在预期简单变量出现的地方,则PERL解释器取其长度。
$scalar=@array;
#$scalar=3,即@array的长度
($scalar)=@array;
#$scalar=1,即@array第一个元素的值
以数组的长度为循环次数可如下编程:
$count=1;
while($count<
=@array){
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=("
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=("
@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("
"
#结果为"
thisisastring"
words"
and"
:
@list,"
colons"
#结果为"
words:
and:
@array=split(/:
/,$string);
#@array=("
第四节:
一、条件判断
if(<
expression>
){
statement_block_1>
elsif(<
){
statement_block_2>
...
else{
statement_block_3>
二、循环:
1、while循环
while(<
statement_block>
2、until循环
until(<
3、类C的for循环,如
for($count=1;
$count<
=5;
$count++){
#statementsinsidetheloopgo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- perl 基础教程