四、控制语句
1.条件语句:
有以下几种形式的条件语句,和C,java还是类似的。
if(expression)BLOCK;
if(expression)
BLOCK1
elseBLOCK2;
if(expression1)
BLOCK1;
elsif(expression2)
BLOCK2;
else
BLOCK3;
#倒置的if语句
expressionif(test_expression);
特别注意这里的elsif不是elseif,这个关键词来源于ada语言。
其中expression可能涉及到的关系运算符:
1)数字值比较:==,>,<,>=,<=,!=;
2)字符串比较:eq,gt,lt,ge,le,ne;(undef被当作假来处理)
3)逻辑运算符:&&,||,和!;and,or,not等。
2.循环语句
循环语句主要有以下一些形式。其中while语句和for语句延续了C中的风格;until语句和while语句可以互相转换。特别说明一下foreach语句,括号中的表达式用于产生一个列表。然后列表中的每个元素依次赋给循环变量,并对每个元素执行一次循环语句。注意循环变量是元素本身的一个引用,而不是元素的一个拷贝。因此,修改循环变量将修改原来的数组。
while(expression)
BLOCK;
doBLOCKwhile(expression);
until(expression)
BLOCK;
for(initialization;test;increment)
BLOCK;
foreach$each(@list)
BLOCK;
例子:
@list=(1,2,3,4,5);
foreach$temp(@list){
if($temp==2){
$temp=20;
}
}
此时@list已变成了(1,20,3,4,5)。
3.局部跳转语句
perl里面有一些局部跳转语句,能够帮助我们控制循环或者让程序下一步跳转到特定的位置。最常用到的是last,next和redo
last:类似于C语言中的break,它让程序跳出循环,也就是跳出当前BLOCK,紧接BLOCK之后的代码往下。
例如:
for($i=1;$i<=10;$i++)
{
Lastif($i==5)#如果$i等于5的话就退出for循环
print"$i\n";
}
next:相当于C语言中的continue语句,使得当前循环到此为止,而开始下一次循环。
例如下面的程序是将1到100之间的奇数显示出来。
for($i=0;$i<=100;$i++)
{
#如果是2的倍数的话,就进入下一次循环
nextunless($i%2);
print"$i是一个奇数!\n";
}
Redo:类似于上述介绍过的next语句,但是它不会判断循环的退出条件。
例如以下例子:
$i=-1;
while($i<=10)
{
$i++;
redounless($i%2);
print$i,"是一个奇数!\n";
}
会打印出:
1是一个奇数!
3是一个奇数!
5是一个奇数!
7是一个奇数!
9是一个奇数!
11是一个奇数!
五、读写文件和目录处理
Perl的I/O操作都是通过文件句柄来进行的。在缺省的情况下,有默认的句柄STDIN(代表标准输入)、STDOUT(代表标准输出)和STDERR(代表标准错误输出)。下标中介绍了如何读写文件,删除和重命名文件,创建和删除目录。
六、子程序
子程序,也称作例程或函数。它接受多个输入参数,返回一个输出参数。使用这样一段分离的代码完成一个特殊的功能,可以减少重复代码同时使得程序更易读。
一、定义语法如下:
subSubroutine_name[()]
{
sequence_of_statements;
}
举例如下:
subGetCurrentPath()
{
$fs=Win32::OLE->new("Scripting.FileSystemObject");
$folder=$fs->GetFolder(".");
$ls_current_path=$folder->path;
return$ls_current_path;
}#GetCurrentPath
二、调用方法如下:
1、用&调用
&subname;
...
subsubname{
...
}
2、先定义后调用,可以省略&符号
subsubname{
...
}