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

 更新时间:2020年6月29日 13:42  点击:1316

以下是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:\>

[!--infotagslink--]

相关文章

  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • linux中PHP dirname(__FILE__)路径问题解决

    在php 中dirname() 函数返回路径中的目录部分,__FILE__而当前运行文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。这是一个魔法变量(预定义常量),在...2016-11-25
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 使用C#获取系统特殊文件夹路径的解决方法

    本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • Java实现将图片上传到webapp路径下 路径获取方式

    这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-12
  • C#使用浏览按钮获得文件路径和文件夹路径的方法

    这篇文章主要介绍了C#使用浏览按钮获得文件路径和文件夹路径的方法,结合实例形式分析了C#浏览器事件响应及文件操作相关技巧,需要的朋友可以参考下...2020-06-25
  • 如何改变R语言默认存储包的路径

    这篇文章主要介绍了改变R语言默认存储包的路径操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • IOS获取各种文件目录路径的方法

    ios获取文件路径的方法,iphone沙箱模型的四个文件夹,通过documents,tmp,app,Library得到模拟器路径的简单方式,下面小编整理相关资料,把IOS获取各种文件目录路径的方式总结如下,需要的朋友可以参考下...2020-06-30
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • c# 获得当前绝对路径的方法(超简单)

    下面小编就为大家分享一篇c# 获得当前绝对路径的方法(超简单),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • node自定义安装更改npm全局模块默认安装路径的步骤

    有段时间没用npm了,新建个项目,需要改变npm全局包默认安装的路径,本文就来介绍一下node自定义安装更改npm全局模块默认安装路径的步骤,感兴趣的可以了解下...2021-09-14
  • Tomcat将配置文件放在外部的解决方法

    这篇文章主要给大家介绍了关于Tomcat将配置文件放在外部的相关资料,对平时工作来说还是挺实用的,需要的朋友们下面随着小编一起来看看吧...2021-05-16
  • C#中文件名或文件路径非法字符判断方法

    这篇文章主要介绍了C#中文件名或文件路径非法字符判断方法,本文主要使用了内置的GetInvalidFileNameChars方法实现非法字符判断,需要的朋友可以参考下...2020-06-25
  • css中空路径对页面性能影响的解决方案

    文章介绍了css中空路径对页面性能影响的解决方案,这个可能很多美工朋友不会去注意这一点,下面我们来看看吧。 在写 CSS 的时候,用 background:url(#) 还是会对页面进...2017-07-06
  • Angular CLI发布路径的配置项浅析

    这篇文章主要给大家介绍了关于Angular CLI发布路径的配置项的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • C# WinForm编程获取文件物理路径的方法

    这篇文章主要介绍了C# inForm编程获取文件物理路径的方法,获取的物理路径是软件即软件安装所在目录,需要的朋友可以参考下...2020-06-25
  • 拖拽文件显示文件路径的vbs代码

    这篇文章主要介绍了拖拽文件显示文件路径的vbs代码,需要的朋友可以参考下...2020-06-30
  • python--shutil移动文件到另一个路径的操作

    这篇文章主要介绍了python--shutil移动文件到另一个路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-13
  • 在vs2010中,输出当前文件路径与源文件当前行号的解决方法

    本篇文章是对在vs2010中,输出当前文件路径与源文件当前行号的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-04-25
  • php怎么安装目录 怎么安装install.php路径

    本文详细介绍了php安装目录的方法,不会的同学可以参考一下。 多数PHP开源项目里有一个install.php的文件,这个文件就是该系统的安装文件,如果要安装的话,前提是要安装...2017-07-06