Hi there:

I am very new in Perl and I am trying to write a script to search for
similar text in two different files, If it founds a match, it should out
put the whole line from the second file in a third file.



Let say that my first file (F1) has a list of some samples like

Cortezaaerea23489284

Cortezaterreste0714857



And the second file (F2) has information about all my universe of samples

Cortezaaerea23489284
QIUEFQIFNIQAONDAIFIQHFAIFAUIFNUAINAHDUFUDHJAHFUAHFUAFYAUFAUHADUHAUFHAUHFUAHUAHFUAUFAUFHAUFHAUFHUAHFUDAHFUAFUAI

Cortezaterreste0918347
QIUEFQIFNIQAONDAIFIQHFAIFAUIFNUAINAHDUFUDHJAHFUAHFUAFYAUFAUHADUHAUFHAUHFUAHUAHFUAUFAUFHAUFHAUFHUAHFUDAHFUAFUAI

Cortezaterreste09899897
IADUFIAJIOADFIOAMCIADFAIUFIAUFIOAUFDIOAUFAIUFAIIUFIAUFIDAUFIAIAUFIAUFIAUFIOAUFIOAUDOIFAUIODUAIOFUAIOFUAIUFOIAUFIAOUFDOIAU

Cortezaaerea234789048
IADUFIAJIOADFIOAMCIADFAIUFIAUFIOAUFDIOAUFAIUFAIIUFIAUFIDAUFIAIAUFIAUFIAUFIOAUFIOAUDOIFAUIODUAIOFUAIOFUAIUFOIAUFIAOUFDOIAU

Cortezaterreste0714857


IADUFIAJIOADFIOAMCIADFAIUFIAUFIOAUFDIOAUFAIUFAIIUFIAUFIDAUFIAIAUFIAUFIAUFIOAUFIOAUDOIFAUIODUAIOFUAIOFUAIUFOIAUFIAOUFDOIAU



The output for this example should be like this

Cortezaaerea23489284
QIUEFQIFNIQAONDAIFIQHFAIFAUIFNUAINAHDUFUDHJAHFUAHFUAFYAUFAUHADUHAUFHAUHFUAHUAHFUAUFAUFHAUFHAUFHUAHFUDAHFUAFUAI

Cortezaterreste0714857


IADUFIAJIOADFIOAMCIADFAIUFIAUFIOAUFDIOAUFAIUFAIIUFIAUFIDAUFIAIAUFIAUFIAUFIOAUFIOAUDOIFAUIODUAIOFUAIOFUAIUFOIAUFIAOUFDOIAU



My script is as follows, it work partially but always just with the last
element in file 1. Could anyone help me to improve it?







{snip] code

Hello Yuma,
I didn't debug your code, but I thought I would show how this might be done
using the Bio::SeqIO module in the BioPerl package.


#!/usr/bin/perl
use strict;
use warnings;
use Bio::SeqIO;

my %id;
open my $fh, "<", 'f1.txt' or die $!;

while (<$fh>) {
   chomp;
   my $id = substr $_, 1;
   $id{$id}++;
}
close $fh or die $!;

my $in  = Bio::SeqIO->new ( -file   => "f2.txt",
                           -format => 'fasta');
my $out = Bio::SeqIO->new(  -file   => '>fasta.dat',
                           -format => 'fasta');

while(my $seq = $in->next_seq() ) {
   $out->write_seq($seq) if exists $id{$seq->id};
}



Chris





Thanks on advances





--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to