perl学习笔记三

定义子程序(可以在程序的任意位置)

关键字sub、子程序名(不包含与号)以及用花括号封闭起来的代码快。

如:sub marine{

  $n+=1;

  print "hello,sailor number $n!\n";

}

调用子程序:&marine;

返回值

所有子程序都会有返回值。最后一次运算的结果是什么就将这个运算结果当作改程序的返回值。

如:sub sum_of_a_and_b{

  $a+$b;

  print "Hey,I'm returning a value now\n";

}

此时返回值为1,因为print执行成功了。

参数

如:$n=&max(10,15);

参数列表将会传入子程序中,Perl会自动将参数列表化名为特殊的数组标量@_,该变量在子程序执行期间有效。子程序可以访问该数组以判断参数的个数和值。

所以函数max可以写成;

sub max{

  if(@_[0]>@_[1]){

  @_[0];

  }

  else {

  @_[1];

  }

}

子程序的私有变量

利用my操作符创建私有变量,又名词法变量。

sub max{

  my($m,$n);//定义

  ($m,$n)=@_;//赋值

  if($m>$n){$m;}else{$n;}

}

use strict编译命令

使用了use strict严格的约束,即按照严格的编程标准来编程。

首先你在定义一个新的变量时必须在变量前面加上my。当然$_ @_等这些默认变量自然不用加my.

代码过长时最好加上use strict。

return 操作符

作用:让程序执行到一半就停下来。

#!/usr/bin/perl
use strict;
use warnings;

my @names=qw /fred barney betty dino wilma pebbles bamm_bnam/;
my $res=&find_elememt("dino",@names);
if($res != -1)
{
    print "ths dino's index is $res .\n";
}
else{
    print "there is no dino.\n";
}
sub find_elememt{
    my ($res,@elememts)=@_;
    foreach  (0..$#elememts) {
        if($res eq $elememts[$_]){
            return $_;
        }
    }
    -1;
}