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/