欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

perl子程序的運用及子程序中變量私有(my)聲明的重要性

 更新時間:2013年02月09日 22:17:06   作者:  
perl中的my可以來定義私有變量,可以在很多情況下防止錯誤的發(fā)生

一個轉(zhuǎn)換程序,簡單的把DNA序列中的A轉(zhuǎn)變成T,第一種情況沒有使用私有變量。

復(fù)制代碼 代碼如下:

#!/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; 
}

結(jié)果如下:
F:\>perl\a.pl 
I changed all TTTTTTTTT A to T, and the we get the result TTTTTTTTT 

F:\> 
這里我們發(fā)現(xiàn)$DNA的值變成了TTTTTTTTT,而不是以前ATTATATAT。這是因為在子程序中,我們使用了同樣的$DNA 變量,而在子程序中它的值已經(jīng)被改變了。所以輸出的時候就是改變以后的值。

下面把子程序中的 $DNA 進行私有變量聲明:

復(fù)制代碼 代碼如下:

#!/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; 
}

結(jié)果如下:
F:\>perl\a.pl 
I changed all ATTATATAT A to T, and the we get the result TTTTTTTTT

F:\>

這樣就正常了。

當(dāng)然你可以說,在子程序中可以完全不用$DNA這一個變量,就如同下面一樣:

復(fù)制代碼 代碼如下:

#!/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; 
}

得到的也是正常的結(jié)果:
F:\>perl\a.pl 
I changed all ATTATATAT A to T, and the we get the result 

F:\>

但是,沒有人能夠保證你不會一時糊涂,在子程序用了程序中的變量?;蛘弋?dāng)你第一次使用的時候,可以避免,當(dāng)你過來幾個月以后回過頭再來使用的時候,就不能保證完全正確了,所以為了代碼的通用性,還是在所有的子程序中使用my私有變量吧。

相關(guān)文章

最新評論