perl语言中文件句柄和参数设置的理解

这是过年期间的学习笔记,这段时间被标书虐的死去活来,休息的时候编辑了,这样提交完标书就可以学习RNA-seq了。
文件句柄 这个概念光看字面完全不知所措,但是当我处理了一些数据时慢慢就能够理解。向别人解释一个概念最好的方法是类比,小时候听老师说地球就像鸡蛋,一下就理解了。目前我找到的能解释文件句柄的好类比就是:
摆渡船,没错,文件句柄就像摆渡船,他每次去对岸接一定人数的客人到这边来。而文件句柄的作用就是按照你的要求每次从文件中取出一部分数据供你处理。
下面举例子来理解:
我们要把几个序列格式化输出,要求每行60个字符。
原始文件如下:每一个>开头的是一个序列文件,写到这里我突然间就有点伤感,这些东西我是知道的,为什么我还要写下来,给谁看呢,那么多的人在学python,只有少数人在用perl,Larry wall知道了是不是要很生气。我编辑的不是文案,我只是在拼凑破碎的心。

你可以看到每一个序列在每行的长度不一样。
mark
总共5个序列,想要让他们按照每一行60个字母呈现出来
我打开VIM,写下一下的代码,然后注释了一下。
mark
运行程序后屏幕上显示:
mark
说明成功了,那么这时候出现两个问题:

  • 如果我处理其他文本这么办?
  • 如果我想每行50个字母,40个字母怎么办?
    为了解决这个问题,需要引入参数这个概念:
    在原有脚本的基础上,修改两个地方
    mark
    这时候假如要实现50字母每行,那么就在终端输入:
    mark
    屏幕上显示:
    mark
    这样我们就算成功了,此时我注意到我在一开始创建测试文件need_cahnge.fa时把scafald写错了,正确的单词应该是Scaffold,所以我准备使用pl程序把他修改好,并且输出到一个新的文件changed.fa
    mark
    终端输入下列命令:
    mark
    这个命令由四个部分组成:
  • 第一个部分是perl,这是所有执行perl程序都需要的
  • 第二个部分为perl程序的名称
  • 第三个部分为第一个参数,就是输入的文件名
  • 第四个部分为第二个参数,就是输出的文件名
    最后得到的结果如下:
    mark
    看吧,名称已经换掉了。
    我想我应该理解perl语言的文件句柄了。
    实际上当我再次会看这个笔记的时候,我发现我陷入了怪圈,这个例子纯粹是为了将参数的作用
    要替换一个文本里面的单词,为什么我不直接使用全局替换呢,整这么麻烦还沾沾自喜。
------ 本文结束------