perl子程式的運用及子程式中變數私人(my)聲明的重要性_perl

來源:互聯網
上載者:User

一個轉換程式,簡單的把DNA序列中的A轉變成T,第一種情況沒有使用私人變數。

複製代碼 代碼如下:

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

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

F:\> 
這裡我們發現$DNA的值變成了TTTTTTTTT,而不是以前ATTATATAT。這是因為在子程式中,我們使用了同樣的$DNA 變數,而在子程式中它的值已經被改變了。所以輸出的時候就是改變以後的值。

下面把子程式中的 $DNA 進行私人變數聲明:

複製代碼 代碼如下:

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

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

F:\>

這樣就正常了。

當然你可以說,在子程式中可以完全不用$DNA這一個變數,就如同下面一樣:

複製代碼 代碼如下:

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

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

F:\>

但是,沒有人能夠保證你不會一時糊塗,在子程式用了程式中的變數。或者當你第一次使用的時候,可以避免,當你過來幾個月以後回過頭再來使用的時候,就不能保證完全正確了,所以為了代碼的通用性,還是在所有的子程式中使用my私人變數吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.