Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: compare two text files

by prasadbabu (Prior)
on Jul 14, 2005 at 05:02 UTC ( #474748=note: print w/replies, xml ) Need Help??


in reply to compare two text files

If i understood your question correctly this should work for you. This can be done still efficiently.

open (GEN, "<general.txt") || die ("cannot open general.txt"); open (SEA, "<search.txt") || die ("cannot open search.txt"); undef $/; $gen = <GEN>; $sea = <SEA>; @gen = split /\n/, $gen; @sea = split /\n/, $sea; for $a (@gen) { @result = grep/^\Q$a\E$/, @sea; push (@final , @result); } print "Search string that matches against general data:\t@final";

Prasad

Replies are listed 'Best First'.
Re^2: compare two text files
by juergenkemeter (Novice) on Jul 14, 2005 at 05:19 UTC
    Hi,thanks for your code. I tested it and it seems that it only works for whole strings. Can it be changed so that it also searches for substrings in the 'general.txt' - file? And since I am a beginner, a few explaining words about your code would be very helpful, thanks! Jurgen

      You just remove the anchors ^ and $ to match the substrings.

      @result = grep/\Q$a\E/, @sea;

      Prasad

        Hi, I have tried the following code for substring search, but it still only works for full strings:
        open (GEN, "<general.txt") || die ("cannot open general.txt"); open (SEA, "<search.txt") || die ("cannot open search.txt"); undef $/; $gen = <GEN>; $sea = <SEA>; @gen = split /\n/, $gen; @sea = split /\n/, $sea; for $a (@gen) { # no SUBSTRINGS: @result = grep/^\Q$a\E$/, @sea; @result = grep/\Q$a\E/, @sea; push (@final , @result); } print "Search string that matches against general data:\t@final";
        ////////////////////////////////////////////////////////// here is the content of 'general.txt': AT1G01450 AT1G12680 AT1G20650 AT1G30640 AT1G33770 AT1G49580 AT1G50140 ////////////////////////////////////////////////////////// here is the content of 'search.txt': At1g28530 At1g28530 At1g55090 At2g14580 1450 ////////////////////////////////////////////////////////// the program should recognize '1450' as substring of the first line of 'general.txt' and give out the whole first line of 'general.txt', right? Jurgen
        that's good code shraddha rusia starletexports

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://474748]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2023-01-31 09:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?