zoukankan      html  css  js  c++  java
  • perl chomp 函数的真正作用

    之前一直以为chomp函数只是去掉字符串末尾的 , 但是今天写程序遇到一个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/
    //g;
        print qq{$_n};
    }
    close $fasta;
    $/ = "
    ";

    运行这段代码,输出结果如下:

    >
    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/
    //g;
        print qq{$_n};
    }
    close $fasta;
    $/ = "
    ";

    输出结果为:

    1ATGCTAGCTACGTACGTACGTTTTTTTTT
    2ACGATCGACGATCGTACGTACGTACGATT
    3ATGCATGCTATACATCAGCTAATATCGCT  

    第一行因为是空行,这里没显示出来;可以看到每行末尾的>符号被去除了,所以chomp的真正作用是去除字符串末尾的$/,只是因为默认情况下

    $/为 ,造成chomp就是去除 的假象;

      

      

  • 相关阅读:
    发送邮件程序
    T-SQL存储过程、游标
    GPS经纬度换算成XY坐标
    开博了
    你应该知道的 50 个 Python 单行代码
    想提升java知识的同学请进
    adb工具包使用方法
    红米note3刷安卓原生
    hadoop 使用和javaAPI
    django学习——url的name
  • 原文地址:https://www.cnblogs.com/xudongliang/p/5127131.html
Copyright © 2011-2022 走看看