循环的默认控制变量为$_

 

  参数数组@_

 

  sub max {

    $max = shift @_;

    foreach (@_) {

      if ($_ > $max) {

        $max = $_;

      } 

    }

    $max;

  }

 

  $maxNum = &max (1, 5, 3, 2);

  //列表可能为空, 调用者得注意返回值可能为undef

 

 

  my($num) = @_;  #list context, same with ($num) = @_;    return the first one of parameters.

  my $num = @_;    #scalar context, same with $num = @_;      return the number of parameters.

  //P.S. :新声明的变量最好都加上my.

  

  

  my @names = qw / fred barney betty dino wilma pebbles bamm-bamm /;

  my $result = &which_element_is( "betty", @names );

  print $result . "\n";

 

  sub which_element_is {  

    #用my声明参数名,一个是$what,表示要搜索的内容;另一个是@array,表示供搜索的数组。  

    my($val, @array) = @_;    #赋值参数列表

    foreach (0..$#array) {   

      if ($val eq $array[$_]) {    

        return $_;   

      }  

    }

    -1;  #explicit

  }

 

  我们常常利用“逻辑或”提供变量的默认取值。

  短路操作符求得的值不只是简单的布尔值,而是最后运算的那部分表达式的值。

  1.my $last_name = $last_name{$someone} || '(No last name)';

  定义或操作符//

  use 5.010;

  my $last_name = $last_name{$someone} // '(No last name)';

  use warnings;

  my $name;  #没有值,未定义!

  printf "%s", $name // '';

  2.($m < $n) && ($m = $n);

  即:if ($m < $n) { $m = $n;}

    或 $m = $n if $m < $n;

    

  

 posted on 2012-09-10 16:25  飞翔@骑士  阅读(133)  评论(0编辑  收藏  举报