现在的位置: 首页 > 综合 > 正文

perl总结(2)

2013年09月03日 ⁄ 综合 ⁄ 共 2055字 ⁄ 字号 评论关闭

控制语句

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 是一个奇数! 

读写文件和目录处理

PerlI/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{
    ...
  }

抱歉!评论已关闭.