- 论坛徽章:
- 0
|
我也来写一个~
- #!/usr/bin/perl
- use warnings;
- use strict;
- open DATA_1, '<', 'number.txt' or die "Can't open the file: $!";
- open DATA_2, '<', 'ardb.faa' or die "Can't open the file: $!";
- open OUT, '>', 'filter_data.txt' or die "Can't output the file: $!";
-
- my %number;
- while (<DATA_1>) {
- chomp;
- my @intermed = split /\t+/, $_;
- $number{$intermed[0]} = [ $intermed[1], $intermed[2] ];
- }
- {
- local $/ = "\n>";
- while (<DATA_2>) {
- chomp;
- my @fasta = split /\s+/, $_;
- my $id = shift @fasta;
- $id =~ s/>//;
- my $seq = join "", @fasta;
- if ( exists $number{$id} ) {
- my $catch_string = substr( $seq, ( $number{$id}->[0] - 1 ),
- ( $number{$id}->[1] - $number{$id}->[0] )+1 );
- my @result = ( $id, $number{$id}->[0], $number{$id}->[1], $catch_string );
- print OUT join "\t", @result, "\n";
- }
- }
- }
复制代码 |
|