perl chomp 函数的真正作用
之前一直以为chomp函数只是去掉字符串末尾的\n, 但是今天写程序遇到一个bug,最后的原因就处在chomp上;
读取fasta文件,内容如下:
>1
ATGCTAGCTACGTACGTACGTTTTTTTTT
>2
ACGATCGACGATCGTACGTACGTACGATT
>3
ATGCATGCTATACATCAGCTAATATCGCT
perl中$/代表默认的输入记录的分隔符;这里将$/设置为">":
#!/usr/bin/perl
use warnings;
use strict; my ($fasta) = @ARGV; open FASTA, $fasta or die "Can't open $fasta";
local $/ = ">";
while (<FASTA>) {
s/\n//g;
print qq{$_\n};
}
close $fasta;
$/ = "\n";
运行这段代码,输出结果如下:
>
1ATGCTAGCTACGTACGTACGTTTTTTTTT>
2ACGATCGACGATCGTACGTACGTACGATT>
3ATGCATGCTATACATCAGCTAATATCGCT
可以看出,$/的值出现在每行的最后;接下来使用chomp函数
#!/usr/bin/perl
use warnings;
use strict; my ($fasta) = @ARGV; open FASTA, $fasta or die "Can't open $fasta";
local $/ = ">";
while (<FASTA>) {
chomp;
s/\n//g;
print qq{$_\n};
}
close $fasta;
$/ = "\n";
输出结果为:
1ATGCTAGCTACGTACGTACGTTTTTTTTT
2ACGATCGACGATCGTACGTACGTACGATT
3ATGCATGCTATACATCAGCTAATATCGCT
第一行因为是空行,这里没显示出来;可以看到每行末尾的>符号被去除了,所以chomp的真正作用是去除字符串末尾的$/,只是因为默认情况下
$/为\n,造成chomp就是去除\n的假象;
perl chomp 函数的真正作用的更多相关文章
- Perl读取标准输入<STDIN>、读取文件输入<>和chomp函数
读取标准输入<STDIN> <STDIN>表示从标准输入中读取内容,如果没有,则等待输入.<STDIN>读取到的结果中,如果没有意外,都会自带换行符. 例如,tes ...
- Perl 子程序(函数)
1.Perl 子程序(函数)Perl 子程序也就是用户定义的函数.Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读. Perl 子程序可以出现在程序的任何地方,语法 ...
- JavaScript函数constructor的作用,意义
前几天写了一片 如何用正确的姿势编写jQuery插件 有朋友拍砖,指正.再此谢谢! 讨论:指定函数的constructor作用到底是什么? 我们一般写jQuery插件的时候是这样的: //构造函数 f ...
- C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数
1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: temp ...
- php页面最大执行时间 set_time_limit函数不起作用
作者: default|标签:PHP set_time_limit 执行时间|2017-3-21 15:03 set_time_limit 不生效或者无效解决方法 <?php globa ...
- Perl printf 函数
转载 Perl printf 函数
- Perl exists 函数和defined函数的区别
Perl exists 函数和defined函数的区别
- Perl参考函数
这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. abs - 绝对值函数 accept - 接受传入的socket连接 alarm - 调度一个SIGALRM ...
- Perl回调函数和闭包
在Perl中,子程序的引用常用来做回调函数(callback).闭包(closure),特别是匿名子程序. 回调函数(callback) 关于什么是回调函数,见一文搞懂:词法作用域.动态作用域.回调函 ...
随机推荐
- Android 常见面试题
这些面试是我之前总结的 .觉得还不错,就贴出来与大家分享一下.当中有不少问题.也是我以前被面试官问过的问题,另一些基础问题总结(既然是基础知识 ,必定是成为一名的 Android 开发者 所必须掌握的 ...
- 【Ubuntu】用户切换到root
出于安全考虑,默认时 Ubuntu 的 root 用户时没有固定密码的,它的密码是随机产生并且动态改变的,貌似是每5分钟改变一次,所以用 su(switch user) 是不可以的,因为我们不知道 r ...
- 每日英语:Prosecutors Wrap Up Case Against Bo
Prosecutors wrapped up their case against Bo Xilai on Sunday, sparring with the defiant former Commu ...
- 李洪强iOS开发之极光推送JPush
李洪强iOS开发之极光推送JPush
- php ldap添加与修改
/** * ldap 备份 * @param int $cardid * @param string $username * @param string $password 未加密密码 * @retu ...
- ffmpeg 批量转换swf为mp3
下了几个音乐居然都是swf格式,在网上找了一下没找到好用的转换工具,于是想到了ffmpeg. linux下可以直接安装ffmpeg #/bin/sh for f in *.swf do ffmpeg ...
- activiti5.13工作流系列(一)-初识
1.什么是工作流? 工作流就是让多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程,工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition) ...
- 【C#/WPF】图片的切割/切图/裁剪图片
前台准备两个Image控件.上面是显示原图,下面显示切割后的效果. <StackPanel Orientation="Vertical"> <Image Widt ...
- 【C#/WPF】键盘事件
需求:按下回车键,触发事件. 搜MSDN时,看到的键盘事件是System.Windows.Forms里的,在WPF中没法用: https://msdn.microsoft.com/zh-tw/libr ...
- 【WPF】给UserControl引入多个资源
问题:为了方便资源的复用,我们通常会把资源单独抽取为一个资源文件,供其他文件引用.而用户自定义控件UserControl中经常需要引入多个资源文件.而在XAML中由于标签UserControl.Res ...