perl中子程序的运用,以及在子程序中变量进行私有(my)声明的重
发布时间:2020-12-15 20:58:53 所属栏目:大数据 来源:网络整理
导读:我们都知道用my可以来定义私有变量,这个可以在很多情况下防止错误的发生,下面我们通过一个例子来看一看。 下面是一个转换程序,也就是简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。如下: [plain] view plain copy print ? #下面是一段DNA序
我们都知道用my可以来定义私有变量,这个可以在很多情况下防止错误的发生,下面我们通过一个例子来看一看。 下面是一个转换程序,也就是简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。如下:
#下面是一段DNA序列 $DNA=ATTATATAT;#这里是我们的序列 $result=A_to_T($DNA); print "I changed all $DNA A to T,and the we get the result $resultnn"; sub A_to_T { my ($input)=@_; $DNA=$input;#没有使用私有变量 $DNA=~s/A/T/g; return $DNA; } 结果如下:
F:&;perla.pl I changed all TTTTTTTTT A to T,and the we get the result TTTTTTTTT F:&; 这里我们发现$DNA的值变成了TTTTTTTTT,而不是以前ATTATATAT。这是因为在子程序中,我们使用了同样的$DNA 变量,而在子程序中它的值已经被改变了。所以输出的时候就是改变以后的值。 下面我们把子程序中的$DNA 进行私有变量声明: 程序如下:
#下面是一段DNA序列 $DNA=ATTATATAT; $result=A_to_T($DNA); print "I changed all $DNA A to T,and the we get the result $resultnn"; sub A_to_T { my ($input)=@_; my $DNA=$input; $DNA=~s/A/T/g; return $DNA; } 结果如下:
F:&;perla.pl I changed all ATTATATAT A to T,and the we get the result TTTTTTTTT F:&; 这样就正常了。 当然你可以说,我们在子程序中可以完全不用$DNA这一个变量,就如同下面一样:
#下面是一段DNA序列 $DNA=ATTATATAT; $result=A_to_T($DNA); print "I changed all $DNA A to T,and the we get the result $resultnn"; sub A_to_T { my ($input)=@_; $dna_to_change=$input; $dna_to_change=~s/A/T/g; return $dan_to_change; } 得到的也是正常的结果:
F:&;perla.pl I changed all ATTATATAT A to T,and the we get the result F:&;
? 原文见:http://blog.csdn.net/gaorongchao1990626/article/details/8022712 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |