develooper Front page | perl.beginners | Postings from July 2012

Array elements

Thread Next
From:
Yuma More
Date:
July 2, 2012 06:10
Subject:
Array elements
Message ID:
CACc4NVwdpeh9nipecm=gDBR5OpuY1hvSDJAW09+iMwjLLegyUg@mail.gmail.com
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?



open (A,"C:/F1.txt");

print "openA\n";

open (B,"C:/F2.txt");

print "openB\n";

open (OUT,">>C:/R1.txt");

my @arr=<A>;

close (A);

my $Names;

while ($line = <B>){

    print "$Names";@fields = split (/\t/,$line);

    our $Seq = "$fields[0]\t$fields[1]";

    our $Label = "$fields[0]";

    foreach $Names (@arr){

# when I try to print “$Names” here; it print each element of the array.

#but when I try the next comparison

     if ($Names eq $Label){

    print OUT "$Seq";

#it just identify the last element of the array

}

}

}

close (B);

close (OUT);



The scrip run but the output file just contains one “Seq” instead of two. I
try to print on the screen all the steps, and apparently the only problem
is the comparison


if ($Names eq $Label){

    print OUT "$Seq";.



I check other post with similar problem but I just can not understand where
is the error.


Thanks on advances


Yuma More


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About