24小时热门版块排行榜    

查看: 250  |  回复: 0

土豆芽之力

铁虫 (初入文坛)

[求助] 关于perl中计算字符数的问题

这段代码用来计算一段氨基酸序列的长度:
print "Type the filename of protein sequencedata that you want to search:\n";
$filename = <STDIN>;

unless ( open(FILE, $filename))
{
print "Cannot find the file.\n";
exit;
}

@protein = <FILE>;
close FILE;

$protein = join( '', @protein);
$protein =~ s/\s//g;

$count = ($protein =~ s/([a-z])/1/isg);

print "The length of sequence is :", $count;

这一段测试有效且正确。
其中
$count = ($protein =~ s/([a-z])/1/isg);
这条代码是在查阅资料后写的。
但不明白其中的原理。

经测试,
当将代码$count = ($protein =~ s/([a-z])/1/isg)替换成$count = $protein或$count = ($protein)时,得到的结果都是一整段蛋白质序列而不是一个整数。理解是,这样直接将变量$protein的内容赋值到$count中了,没有计算。
当替换成$count = ('1','2','3','4','1')时,得到的结果是5。可见这里产生了计算。
但是,当$count = ($protein)时,不是可以近似看成$count = ('m','s','a','s',...);吗?为什么这样又不会产生计算了呢?
而经过($protein =~ s/([a-z])/1/isg)这条代码将字符替换一遍后,却能计算字符数了!

发自小木虫IOS客户端
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 土豆芽之力 的主题更新
信息提示
请填处理意见