gpt4 book ai didi

perl 读取所需文件的路径,然后打开相应的文件

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章perl 读取所需文件的路径,然后打开相应的文件由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

以下是DNA序列,存储在window下F:\perl\data.txt里面:

复制代码 代码如下:

AAAAAAAAAAAAAAGGGGGGGTTTTCCCCCCCC 
CCCCCGTCGTAGTAAAGTATGCAGTAGCVG 
CCCCCCCCCCGGGGGGGGAAAAAAAAAAAAAAATTTTTTAT 
AAACG 

  。

下面是程序:

复制代码 代码如下:

#下面的程序是用来计算一段DNA序列中ATGC的数量的 。

  。

#首先定义四种碱基的数量为0 $count_A=0; $count_T=0; $count_C=0; $count_G=0; #首先要先把序列进行合并成一行 。

#先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写 #f:\\perl\\data.txt print "please input the Path just like this f:\\\\perl\\\\data.txt\n"; chomp($dna_filename=<STDIN>); #打开文件 open(DNAFILENAME,$dna_filename)||die("can not open the file!"); #将文件赋予一个数组 @DNA=<DNAFILENAME>,

#以下两步要把所有的行合并成一行,然后去掉所有的空白符 $DNA=join('',@DNA); $DNA=~s/\s//g,

#将DNA分解成,然后赋值到数组 @DNA=split('',$DNA),

#然后依次读取数组的元素,并对四种碱基的数量进行统计 foreach $base(@DNA) {  if ($base eq 'A')  {   $count_A=$count_A+1;  }  elsif ($base eq 'T')  {   $count_T=$count_T+1;  }  elsif ($base eq 'C')  {   $count_C=$count_C+1;  }  elsif ($base eq 'G')  {   $count_G=$count_G+1;  }  else  {   print "error\n"  } } #输出最后的结果 print "A=$count_A\n"; print "T=$count_T\n"; print "C=$count_C\n"; print "G=$count_G\n",

下面是运行的结果:

复制代码 代码如下:

F:\>perl\a.pl please input the Path just like this f:\\perl\\data.txt f:\\perl\\data.txt error A=40 T=17 C=27 G=24 。

  。

F:\> 。

大家可能观察到有一个error的出现,这是为什么呢?

  。

大家仔细看一看最上面的原始 DNA序列,用特殊颜色标记的,可以看到有一个V,所以会输出错误.

这里把DNA序列经过整合成一行,然后去除所有的空白字符以后,又把$DNA通过split函数变成了数组,然后进行统计,那有没有更好的办法呢?

其实perl里有一个函数,substr.

我们先来看一看这个函数的用法,substr是针对一个大字符串的操作符(The substr function works with only a part of a larger string )言外之意就是对一个很长的字符串,进行片段化处理,取其中的一部分。我们这里用到的就是这个特性.

$little_string =substr($large_string,$start_position,$length) 。

$小片段=substr($大片段,$你要截取的小片段的起始位置,$你要截取的长度) 。

我们这里为了统计DNA中各种碱基的数量,所以要处理的字符串是一个碱基,所以我们要把$length设置为1。这样才能够满足我们的需求.

下面我们把修改过的代码写下:

复制代码 代码如下:

#下面的程序是用来计算一段DNA序列中ATGC的数量的 。

  。

#首先定义四种碱基的数量为0 $count_A=0; $count_T=0; $count_C=0; $count_G=0; #首先要先把序列进行合并成一行 。

#先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写 #f:\\perl\\data.txt print "please input the Path just like this f:\\\\perl\\\\data.txt\n"; chomp($dna_filename=<STDIN>); #打开文件 open(DNAFILENAME,$dna_filename)||die("can not open the file!"); #将文件赋予一个数组 @DNA=<DNAFILENAME>,

#以下两步要把所有的行合并成一行,然后去掉所有的空白符 $DNA=join('',@DNA); $DNA=~s/\s//g,

#然后依次读取字符串的元素,并对四种碱基的数量进行统计 for ($position=0;$position<length $DNA;++$position) {  $base=substr($DNA,$position,1);  if ($base eq 'A')  {   $count_A=$count_A+1;  }  elsif ($base eq 'T')  {   $count_T=$count_T+1;  }  elsif ($base eq 'C')  {   $count_C=$count_C+1;  }  elsif ($base eq 'G')  {   $count_G=$count_G+1;  }  else  {   print "error\n"  } } #输出最后的结果 print "A=$count_A\n"; print "T=$count_T\n"; print "C=$count_C\n"; print "G=$count_G\n",

  。

得到的结果如下:

复制代码 代码如下:

F:\>perl\a.pl please input the Path just like this f:\\perl\\data.txt f:\\perl\\data.txt error A=40 T=17 C=27 G=24 。

  。

F:\> 。

  。

最后此篇关于perl 读取所需文件的路径,然后打开相应的文件的文章就讲到这里了,如果你想了解更多关于perl 读取所需文件的路径,然后打开相应的文件的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com