用perl实现生物突变的随机模拟程序代码


程序文件:test.pl


#!/bin/perl
# filename:test.pl
use strict;
use warnings;

#随便找一个比较好识别的序列
my $DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn";
my $i;
my $mutant;
srand(time|$$);
$mutant=mutate($DNA);
print "Mutate n". $DNA;
print "Here is the original DNA:n";
print "$DNAn";
print "Here is the mutant DNA:nn";
print "$mutantn";
print "Here are 10 more successive mutations:n";
for ($i=0;$i<10;++$i)
{
$mutant=mutate($mutant);
print "$mutantn";
}

#子程序:根据序列的长度定义一个随机位置的子程序
sub randomposition
{
my($string)=@_;
return int(rand(length($string)));
}
#子程序:从一个数组中随机选取一个元素
sub randelement
{
my(@array)=@_;
return $array[rand @array];
}

#子程序:引用上面的子程序,从ATGC四个碱基中随机选取一个
sub randomnucleotide
{
my (@nucleotides)=qw/A T G C/;
return randelement(@nucleotides);
}

#子程序:生成突变的子程序
sub mutate
{
my($dna)=@_;
my(@nucleotides)=qw(A T G C);
my($position)=randomposition($dna);
my($newbase)=randomnucleotide(@nucleotides);
substr($dna,$position,1,$newbase);#substr($string,$initial_position,$length,replacement substring)
return $dna;
}

结果如下:
F:>perltest.pl
Mutate
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Here is the original DNA:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Here is the mutant DNA:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

Here are 10 more successive mutations:
ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGTAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGTAAAAAAAAAAAAA

F:>

perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行
默认状态下,很显然都是用n来区分行,n也被我们称作为换行符。当读取序列时,按行来读取时,就是以换行符为标准。读取的strawberry1.gb的文件内容

perl写的一个随机编故事的程序(rand随机函数)
#!/bin/perlusestrict;usewarnings;#定义变量my$count;my$input;my$number;my$sentence;my$story;#定义四个数组#定义了人物数组my@nouns=('Dad','TV','Mom','Groucho','Rebecca','Harpo','RobinHoo

perl实现的两个文件对比并对数据进行筛选的脚本代码
#!/usr/bin/perlmy%scyjm;open(CONTACT,"f:\perl\f.txt")||die("cannotopenthefile!");while(CONTACT){nextif/^#/;#if($_=~/^#/的简写chomp;my@information=split;#my@information=split/s+/,$_;的简写next