四、控制语句
1. 条件语句:
有以下几种形式的条件语句,和C,java还是类似的。
if ( expression ) BLOCK;
if ( expression )
BLOCK1
else BLOCK2;
if ( expression1 )
BLOCK1;
elsif ( expression2 )
BLOCK2;
else
BLOCK3;
#倒置的if语句
expression if ( 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;
do BLOCK while(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++)
{
Last if ($ i==5) #如果$i等于5的话就退出for循环
print"$i\ n" ;
}
next:相当于C语言中的continue语句,使得当前循环到此为止,而开始下一次循环。
例如下面的程序是将1到100之间的奇数显示出来。
for( $i=0; $i< =100; $i++)
{
#如果是2 的倍数的话, 就进入下一次循环
next unless ( $i%2 );
print"$i 是一个奇数!\n" ;
}
Redo:类似于上述介绍过的next语句,但是它不会判断循环的退出条件。
例如以下例子:
$i = -1;
while ($i <=10)
{
$i++;
redo unless ($i %2);
print $i , " 是一个奇数!\n" ;
}
会打印出:
1 是一个奇数!
3 是一个奇数!
5 是一个奇数!
7 是一个奇数!
9 是一个奇数!
11 是一个奇数!
五、读写文件和目录处理
Perl的I/O 操作都是通过文件句柄来进行的。在缺省的情况下,有默认的句柄STDIN(代表标准输入) 、STDOUT(代表标准输出)和STDERR (代表标准错误输出)。下标中介绍了如何读写文件,删除和重命名文件,创建和删除目录。
六、子程序
子程序,也称作例程或函数。它接受多个输入参数,返回一个输出参数。使用这样一段分离的代码完成一个特殊的功能,可以减少重复代码同时使得程序更易读。
一、定义语法如下:
sub Subroutine_name[()]
{
sequence_of_statements;
}
举例如下:
sub GetCurrentPath ()
{
$fs = Win32::OLE->new(" Scripting.FileSystemObject" );
$folder = $fs->GetFolder(" .");
$ls_current_path = $folder->path;
return $ls_current_path;
}#GetCurrentPath
二、调用方法如下:
1、用&调用
&subname;
...
sub subname{
...
}
2、先定义后调用 ,可以省略&符号
sub subname{
...
}