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

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

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

一個(gè)轉(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。這是因?yàn)樵谧映绦蛑校覀兪褂昧送瑯拥?DNA 變量,而在子程序中它的值已經(jīng)被改變了。所以輸出的時(shí)候就是改變以后的值。

下面把子程序中的 $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這一個(gè)變量,就如同下面一樣:

復(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:\>

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

相關(guān)文章

最新評論

财经| 长春市| 台安县| 修水县| 溧水县| 西宁市| 迭部县| 安福县| 资兴市| 合江县| 无锡市| 云霄县| 沅陵县| 阳西县| 资兴市| 滁州市| 瑞昌市| 松原市| 志丹县| 股票| 滁州市| 霍林郭勒市| 临武县| 定州市| 西乌珠穆沁旗| 三都| 横山县| 绥江县| 罗甸县| 克什克腾旗| 金华市| 凌源市| 西充县| 郴州市| 巴马| 靖安县| 丹东市| 深水埗区| 浦江县| 砀山县| 女性|