PERL中的私有变量

   默认情况下,PERL中所有的变量都是全局变量,也就是说在程序中的任何地方都可以访问他们,但是你也可以随时用一个操作符来创建私有的词法变量,即my

sub max

{

     my($m,$n)=@_;

     if($m>$n)

    print $m;

    else

    print $n;

}

使用my操作符限定过的变量,其作用域只在其所在的代码块中有效,不被其他代码访问,另外,PERL中允许最后一个语句块省略分号,但是,还是别用了,不能很好地养成好的

编码习惯

更好的方式是在使用参数之前,进行参数的检测,比如,看下是否传递进来的是两个参数

sub max
{
    if(@_!=2){
        print  "warn the param is not propley";#有一点要注意的是,在if语句之后最好加上花括号,作为代码块的起始和结束标记,这样不怎么容易出问题
        }
    my($m,$n)=@_;
    
    if(@_[0]>$n)
    {
        print $m;
        }
    else
    {
        print $n;
        }
}
&max(3,4);

当然最好的情况是程序能够自行处理可变参数的参数列表,代码如下:

sub max
{
    #首先获得参数列表中的第一个值,作为其实最大值
    my $max_so_far=shift @_;
    foreach(@_)
    {

        #未使用指定遍历列表的控制变量时,自动使用默认变量,$_

        if($max_so_far<$_)
        {
            $max_so_far=$_;
        }
    }
    print $max_so_far;

}
&max(3,4,4,5);

如果使用该函数的人将空列表传入程序,作为参数列表,我也没有关系,这样的话,$max_so_far是undef,而foreach循环则根本不执行

现在说下词法变量my,即类似于C中的作用域限定符,

书中说my操作符当不是用小括号时,只是声明了一个变量,

my $fred=1,$h=3;这样的话$h是可以使用的,不知道怎么理解,暂时不作处理

PERL中所有新的变量,标量的初始值是undef,列表的初始值是空列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值