源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-03-20 09:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:perl子程序的运用及子程序中变量私有(my)声明的重要性
一个转换程序,简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。
[u]复制代码[/u] 代码如下:
#!/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 进行私有变量声明:
[u]复制代码[/u] 代码如下:
#!/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这一个变量,就如同下面一样:
[u]复制代码[/u] 代码如下:
#!/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私有变量吧。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部