Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1147988
  • 博文数量: 312
  • 博客积分: 12522
  • 博客等级: 上将
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 18:35
文章分类

全部博文(312)

文章存档

2016年(3)

2015年(1)

2013年(1)

2012年(28)

2011年(101)

2010年(72)

2009年(13)

2008年(93)

分类: IT业界

2011-07-13 23:08:05

函数的格式

sub shift_to_uppercase{

    @words=qw(cia fbi un nato unicef);

    foreach(@words){

             $_=uc($_);       #换成大写

    }

    return(@words);

}

@acronyms=shift_to_uppercase();

print "@acronyms";

输出为:CIA FBI UN NATO UNICEF

 

C语言不同,在perl中,perl的变量默认为全局变量

例如:

sub moonweight{

 

    return($weight/6);

}

$weight=120;

print moonweight;

要使变量成为函数的专用变量,使用my操作符

sub moonweight{

    my $weight;

    $weight=@_;

    return($weight/6);

}

print moonweight(120);

程序中的其他函数都不能访问$weight的值,全局变量和专用变量可以拥有相同的名字

 

my声明多个专用变量

my($larry,@curly,%moe);

大部分时候,使用如下形式

sub player_stats{

       my($at_bats,$hits,$walks)=@_;

# Rest of function...

}

这种方法能够创建一个与程序员友好的函数,它的变量都是函数的专用变量,因此它们不会影响其他的函数,或者受其他函数的影响(包括程序的主体)。当子例程运行结束时,所有专用变量均被撤消。

 

递归函数

sub factorial {

    my($num)=@_;      #将参数传递给变量$num

    return(1) if ($num<=1);

    return ($num*factorial($num-1));

}

print factorial(6);

 

mylocal声明的变量

sub bar{

    ($a,$b)=@_;

    $b=100;

    $a=$a+1;

    print $a,"\n",$b,"\n";

}

sub foo{

    my($a)=67;

    local($b)=@_;

    bar($a,$b);

    print $a,"\n",$b,"\n";

}

foo(5,10)

输出为:

68

100

67

100


阅读(1025) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~