use warnings; $average_length = 0; srand(time|$$); open (DOG, ">>/RandGenNew/filelist.txt") || die "Couldn't open DOG.\n"; for ($p=1; $p<2001; $p++) { $filename = ">>/RandGenNew/Genes/RandGen-"; $filename .= $p; $filename .= ".txt"; $sequence = "ORIGIN"; $sequence .= "\n"; $sequence .= "atg"; print DOG $filename; print DOG "\n"; open (CAT, $filename ) || die "Couldn't open CAT.\n"; $number_exons = int(rand(20)); $number_exons = $number_exons + 1; print "Number of middle exons: $number_exons \n"; #First exon $length_first_exon = int(rand(200)); $length_first_exon = $length_first_exon + 50; for ($k=1; $k<$length_first_exon; $k++) { $number = int(rand(1000)); if($number <= 300) { $sequence .= "c"; } elsif($number > 300 && $number <= 630) { $sequence .= "g"; } elsif($number > 630 && $number <= 820) { $sequence .= "t"; } elsif($number > 820 && $number <= 1000) { $sequence .= "a"; } } #Middle exons for ($i=1; $i<$number_exons; $i++) { $size = 0; $size = int(rand(500)); $size = $size + 50; for ($t=1; $t<$size; $t++) { $number = int(rand(1000)); if($number <= 250) { $sequence .= "c"; } elsif($number > 250 && $number <= 500) { $sequence .= "g"; } elsif($number > 500 && $number <= 725) { $sequence .= "t"; } elsif($number > 725 && $number <= 1000) { $sequence .= "a"; } } } #Last exon $length_last_exon = int(rand(200)); $length_last_exon = $length_last_exon + 50; for ($o=1; $o<$length_last_exon; $o++) { $number = int(rand(1000)); if($number <= 230) { $sequence .= "c"; } elsif($number > 230 && $number <= 460) { $sequence .= "g"; } elsif($number > 460 && $number <= 740) { $sequence .= "t"; } elsif($number > 740 && $number <= 1000) { $sequence .= "a"; } } print CAT $sequence; $average_length = $average_length + length $sequence; close (CAT); } $average_length = $average_length / $p; $average_length = int($average_length); print "Average length is $average_length bases."; print DOG "\n"; print DOG "Average length is $average_length bases."; close (DOG); exit;