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

perl中子程序的运用,以及在子程序中变量进行私有(my)声明的重要性 .,第1张

概述我们都知道用my可以来定义私有变量,这个可以在很多情况下防止错误的发生,下面我们通过一个例子来看一看。 下面是一个转换程序,也就是简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。如下: [plain] view plain copy print ? #下面是一段DNA序列   $DNA=ATTATATAT;#这里是我们的序列   $result=A_to_T($DNA);   pri

我们都知道用my可以来定义私有变量,这个可以在很多情况下防止错误的发生,下面我们通过一个例子来看一看。

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

[plain] view plain copy print ? #下面是一段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;   }  
#下面是一段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;}

结果如下:

[plain] view plain copy print ? F:\>perl\a.pl   I changed all TTTTTTTTT A to T, and the we get the result TTTTTTTTT         F:\>  
F:\>perl\a.plI changed all TTTTTTTTT A to T,and the we get the result TTTTTTTTTF:\>

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



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

程序如下:

[plain] view plain copy print ? #下面是一段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;   }  
#下面是一段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;}

结果如下:

[plain] view plain copy print ? F:\>perl\a.pl   I changed all ATTATATAT A to T, and the we get the result TTTTTTTTT         F:\>  
F:\>perl\a.plI changed all ATTATATAT A to T,and the we get the result TTTTTTTTTF:\>

这样就正常了。


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

[plain] view plain copy print ? #下面是一段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;   }  
#下面是一段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;}

得到的也是正常的结果:

[plain] view plain copy print ? F:\>perl\a.pl   I changed all ATTATATAT A to T, and the we get the result         F:\>  
F:\>perl\a.plI changed all ATTATATAT A to T,and the we get the resultF:\>


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

 

原文见:http://blog.csdn.net/gaorongchao1990626/article/details/8022712

总结

以上是内存溢出为你收集整理的perl中子程序的运用,以及在子程序中变量进行私有(my)声明的重要性 .全部内容,希望文章能够帮你解决perl中子程序的运用,以及在子程序中变量进行私有(my)声明的重要性 .所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存