最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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 進(jìn)行私有變量聲明:

復(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)文章

最新評論

洛川县| 阿图什市| 当阳市| 特克斯县| 绥棱县| 长海县| 宜兴市| 克什克腾旗| 安泽县| 涿鹿县| 岳普湖县| 晴隆县| 宁远县| 苍山县| 寿阳县| 黄龙县| 韶山市| 永福县| 泰州市| 沁源县| 河西区| 耒阳市| 新巴尔虎左旗| 贵溪市| 秦安县| 淮南市| 黄陵县| 海南省| 阳城县| 青岛市| 萨嘎县| 包头市| 封丘县| 达尔| 云龙县| 利津县| 泸州市| 都安| 海林市| 四会市| 伊宁市|