• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    perl子程序的运用及子程序中变量私有(my)声明的重要性

    一个转换程序,简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。

    复制代码 代码如下:

    #!/bin/perl
    #下面是一段DNA序列 
    $DNA=ATTATATAT;#这里是我们的序列 
    $result=A_to_T($DNA); 
    print "I changed all $DNA A to T, and the we get the result $result\n\n"; 

    sub A_to_T  

       my ($input)=@_; 
       $DNA=$input;#没有使用私有变量 
       $DNA=~s/A/T/g; 
       return $DNA; 
    }

    结果如下:
    F:\&;perl\a.pl 
    I changed all TTTTTTTTT A to T, and the we get the result TTTTTTTTT 

    F:\&; 
    这里我们发现$DNA的值变成了TTTTTTTTT,而不是以前ATTATATAT。这是因为在子程序中,我们使用了同样的$DNA 变量,而在子程序中它的值已经被改变了。所以输出的时候就是改变以后的值。

    下面把子程序中的 $DNA 进行私有变量声明:

    复制代码 代码如下:

    #!/bin/perl
    #下面是一段DNA序列 
    $DNA=ATTATATAT; 
    $result=A_to_T($DNA); 
    print "I changed all $DNA A to T, and the we get the result $result\n\n"; 

    sub A_to_T  

       my ($input)=@_; 
       my $DNA=$input; 
      $DNA=~s/A/T/g; 
      return $DNA; 
    }

    结果如下:
    F:\&;perl\a.pl 
    I changed all ATTATATAT A to T, and the we get the result TTTTTTTTT

    F:\&;

    这样就正常了。

    当然你可以说,在子程序中可以完全不用$DNA这一个变量,就如同下面一样:

    复制代码 代码如下:

    #!/bin/perl
    #下面是一段DNA序列 
    $DNA=ATTATATAT; 
    $result=A_to_T($DNA); 
    print "I changed all $DNA A to T, and the we get the result $result\n\n"; 

    sub A_to_T  

       my ($input)=@_; 
       $dna_to_change=$input; 
       $dna_to_change=~s/A/T/g; 
       return $dan_to_change; 
    }

    得到的也是正常的结果:
    F:\&;perl\a.pl 
    I changed all ATTATATAT A to T, and the we get the result 

    F:\&;

    但是,没有人能够保证你不会一时糊涂,在子程序用了程序中的变量。或者当你第一次使用的时候,可以避免,当你过来几个月以后回过头再来使用的时候,就不能保证完全正确了,所以为了代码的通用性,还是在所有的子程序中使用my私有变量吧。

    上一篇:perl的格式化输出及chomp的重要性分析
    下一篇:perl push的用法及子程序返回值的反思
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    perl子程序的运用及子程序中变量私有(my)声明的重要性 perl,子程序,的,运用,及,