http://qs1969.pair.com?node_id=474763


in reply to Re^3: compare two text files
in thread compare two text files

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

Replies are listed 'Best First'.
Re^5: compare two text files
by prasadbabu (Prior) on Jul 14, 2005 at 06:06 UTC

    The problem is, you have to include the option modifier 'i' to ignore case. Because in your gen.txt file 'AT' is present and in search file 'at' is present.

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

    Now it will work fine.

    Prasad