in reply to Print the data following few specific lines in perl

You can use select to choose between your 2 output files:
use strict; use warnings; my $in = $ARGV[0]; my $p = $ARGV[1]; my $s = $ARGV[2]; open IN , "<$in" or die $!; open P_OUT, ">$p" or die $!; open S_OUT, ">$s" or die $!; while (<IN>) { if (/^>/) { if (/pair:/) { select P_OUT; } else{ select S_OUT; } } print; } close(IN); close(P_OUT); close(S_OUT);

Replies are listed 'Best First'.
Re^2: Print the data following few specific lines in perl
by ad23 (Acolyte) on Jul 01, 2010 at 18:30 UTC

    Thanks for your help.

    But all the above codes are printing just the header lines. I still am not able to print the data after the header lines for each record.

    Am I am not seeing the obvious???

      It seems to work for me.

      Download my code and save it as a file named 847578.pl. Then download your data and save it in a file named fasta.txt. Then execute this at your command line:

      perl ./847578.pl fasta.txt p.txt s.txt

      I get 2 output files. This is the contents of file p.txt:

      >CVSF10000.x1 bg|356789 pair:789860 ATGCGTAGCTGATGTGCTGCTGATGCTAGTCGTCGTAGCTGATGCATGCTGATCGTAGTGCTCGATGCTA GTCGTAGTCGTAGTCGTAGCGACTGATGCGATCGTAGTCGGATGATGCTGACTGATGCTGATCTGTACGT CGTAGCTGATGCATGCGCTAGTAGCT >CVSF10000.y1 bg|356790 pair:789859 GCTAGTCGATGCTGATGCTGTAGCTAGCGTAGTCGTACGCGCGCGCGCGCGTTTTTTGTGACGTCGTAGT CCGTAGCTGATGCGATGCTAGTGCTGTGTCAGCTGATGTCGTGTGTAGCTGATGCTGATCGTTCGTGTGT CGATGCTGATGCTAGTCGTAGTGTAT >CVSF10001.x1 bg|356791 pair:789862 AGTCGTAGTCGTAGCTGTAGCTGATGCTGTGTACGATGCTGATGCGATGCGTAGCGTAGCATCGATGCTA CGACTAGTCGTAGTCGTC >CVSF10001.y1 bg|356792 pair:789861 CGTAGCTGATGCTGATCGTAGTCGTAGTCGATGCGATGCTAGTCGTAGCTGTAGCTGATGCTGCGTGCTG CAGTCGATGCTAGTCGATGCTGATCGTCTAGCAT

      This is the contents of file s.txt:

      >CVSF43565.d1 bg|346278 CAGACACACTTCTTTTAGTTGAGACACATGGAAAACATCATGTATGGCAGACAACTGTTCTGGGAGTTGG ATCCGGGTAAGCAACGGGTCCACATATCTCCACAATCTCATAAGGGGCCAACATAGCGGGGGAGCTAACT TGCCTTTGATTCCAAACCGTTGCACTCCTTTGGTCGGGGAAACTCGAAGGTACACATGATCACCAAGGTC GAACTGCAGGGGTCTTCTCCGCTGGTCGGAGTAGCTCTTCTGTCAAGATTGGGCGGCCTTGAGATGTGCT TGAATTACCTTCACTTGCTCTTCGGCTTCTGCCACTTAAGTCAGGGCCATAGACCTGTCTCTCCCCTGGG CAGACACACTTCTTTTAGTTGAGACACATGGAAAACATCATGTATGGCAGACAACTGTTCTGGGAGTTGG ATCCGGGTAAGC >CVSF43566.d1 bg|346279 CAGACACACTTCTTTTAGTTGAGACACATGGAAAACATCATGTATGGCAGACAACTGTTCTGGGAGTTGG ATCCGGGTAAGCCAGACACACTTCTTTTAGTTGAGACACATGGAAAACATCATGTATGGCAGACAACTGT TCTGGGAGTTGGAATGCTAGTCGATCGCCAGACACACTTCTTTTAGTTGAGACACATGGAAAACATCATG TTGGCAGACAACTGTTCTGGGAGTTGGATCCGGGTAAGCCAGACACACTTCTTTTAGTTGAGACACATGG AAAACATCATGTATGGCAGACAACTGTTCTGGGAGTTGGATCCGGGTAAGC >CVSF43567.d1 bg|346280 CGTAGCTGATGCTGTGCTGTTGTGTCGGGGGGATATATATATATATATGGGGTCGTAGTCGTAGCGCTAG TATGCTAGCAGCGTAGATGCTGATCGATGCTGATGCTGATCGTAGTCGTAGGCTAGTGCGATCGTAGTCG TAGTCGATGCTGATGCGTAGCTGATGTGCTGCTGATGCTAGTCGTCGTAGCTGATGCATGCTGATCGTAG TGCTCGATGCTAGTCGTAGTCGTAGTCGTAGCGACTGATGCGATCGTAGTCGGATGCTAGCACGTAGCTG GCTCGATGCTGATGCTGAT

        It works now after I copied your code and renamed my files.

        Thanks!!!!