perl练习——计算点突变

题目来源:http://rosalind.info/problems/hamm/

一、程序目的:计算序列点突变(Point Mutations)

输入:

GAGCCTACTAACGGGAT

CATCGTAATGACGGCCT

输出:

7

二、程序设计

读取序列后利用split分割字串,然后注意比较,注意perl字符比较用“ne”(不等于)。

#!/usr/bin/perl/
use strict;
my (@seq, @seq1, @seq2, $distance);
@seq = <>;
# @seq1 = split //, chomp($seq[0]); # 这样会出错,chomp有返回值0 1
# @seq2 = split //, chomp($seq[1]);
@seq1 = split //, $seq[0];
@seq2 = split //, $seq[1];

for(my $i = 0; $i <= $#seq1; $i++){
        if($seq1[$i] ne $seq2[$i]){
                $distance++;
        }
}
print $distance."\n";

三、补充

perl比较

  数字 字符
大于 > lt
小于 < gt
等于 == eq
不等于 != ne
大于或等于 >= ge
小于或等于 <= le

其他的代码:

#!/usr/bin/perl
#
my @str = <STDIN>;

my $c = 0;
for ($i = 0; $i < length($str[0]); $i++){
        $c++ if (substr ($str[0], $i, 1)) ne (substr ($str[1], $i, 1));
}

print "$c\n";

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

时间: 2024-12-24 05:06:40

perl练习——计算点突变的相关文章

Perl科学计算(1.1)

目前最流行的做机器学习的语言当属python了,两大库numpy和scipy十分强大.但本人学习perl的初衷是做爬虫,但做数据挖掘又不得不碰到科学计算,而perl中没有一个像numpy和scipy这么强大的module,更多的是零散的分布在许多module中,所以只能自己写点函数,以备自用.学习perl大约5个月的时间,所以以下代码存在许多不足之处,请大家多多见谅,能提意见更佳. 本节主要介绍以下几个功能: 1 #ex1:向量求和函数 2 my @ex1=1..5; 3 print &sum(

perl练习——FASTA格式文件中序列GC含量计算&amp;perl数组排序如何获得下标或者键

一.关于程序: FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id INPUT:FASTA格式文件 >seq1 CGCCGAGCGCTTGACCTCCAGCAAGACGCCGTCTGGCACATGCAACGAGCTGTAGCAGAC >seq2 ATGCCTAGAACGTTCGAGACTTCTCGGGTGCGGTAGAATTAGCCATTCGACCGACTTCCA GCATCTGCGAGCCGCCTGTTGATTGCATCCGCCGGGGACGCAACAAGGCAAG

Perl一行式:字段处理和计算

获取每行最后一个字段 $ perl -alne 'print $F[$#F]' file.log 这里涉及到了选项"-a".数组@F.这里同时还会解释-F选项,它和-a常一起使用. 选项"-a"和awk的自动字段分割一样,会自动将每行数据划分为几个字段.划分字段的分隔符由-F选项指定.如果没有指定-F,则默认以空白符号进行分割(连续空格被认为是单空格). 分割后的元素全都收集到一个数组@F中,所以第一个字段的内容是$F[0],最后一个字段是$F[-1]或$F[$#F

Perl中的真与假

Perl认为真值是自明的(self-evident), 表示任何事物的真值都可以计算.Perl以实用的方式来定义真值,即一个实体的真值取决于这个实体的类型.Perl总是乐观的认为:这个世界上真的东西远比假的东西多的多. Perl区别与任何其他计算机语言,Perl是语言学家创造的,而语言的意思离不开上下文语境,所以Perl中的真值都可以在标量(标量$与数组@类似于英文中的单数与复数, book 与 books的区别, 真值在现实世界中,应该就是单数,所以是标量)计算,除此之外,不会做任何类型的强制

像学历史课本一样学习Perl

第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言.当然,带我入门的还是那本赫赫有名的The Llama  Book, 即<Learning Perl> 第四版. 然而,由于主要是为了使用,所以只是快餐式的学习,并没有系统的去了解Perl,这几年来三三两两的也写了不少Perl脚本,但是对于Perl那些天书式的符号,还是颇有些头疼,经常,写到一半就得停下来去查一下某个奇怪的语法,或者奇特的符号,很是打断思路.

perl 常用命令

过滤重复字符 [plain] view plaincopy perl -e '$_=<STDIN>; @in = split; if (@in < 100){ @out = grep {! $hash{$_}++ } @in; print join "\n", @out;}' 统计全文单词数 (同awk '{for (i=1;i<=NF;i++){a[$i]++}} END{for (b in a) print b": "a[b]}' inp

perl多线程使用

原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun <<=========================threads===========================>> #!/usr/bin/perl use?threads ('yield', ????????????'stack_size'?=> 64*4096, ????????????'exit'?=> 'threads_only'

Perl入门(四)Perl的正则表达式

正则表达式是Perl语言的特色,基本的语法不是很难,但是编写一个符合需求.高效的正则表达式,还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正则表达式内容/; 作用:查找匹配内容中是否包含"正则表达式内容",如果包含返回1,否则返回0: #!user/bin/env perl -w #1... $str1 = "i like perl"; $result1 = ($str1 =~ m/perl/); print "$result1 $str

关于perl bignum模块用法

用bignum处理大数: 对于32位的perl来说,他的整数范围被限定在32位. perl -le "print 873498127389471892374891723489172389407128947891234" 8.73498127389472e+50 打印的结果为科学记数法显示 在命令行中输入一个较大位数的整数,显示结果与我们预想结果存在较大的偏差,精度缺失. 在perl中使用bignum模块可以解决数据精度缺失的问题. 我们来看两个例子: 对比上述结果可以看到,当加入big