http://qs321.pair.com?node_id=906356


in reply to using grep to search an array

Are you looking for lines exactly the same or just prefixes? If the latter, the "\n" at the end of $testit will get in the way.

In any case, you are overwriting @grepnames each time through the loop, so you will only return the matches from the last line of FILEA.

Try push @grepnames, grep... instead.

And use strict and warnings!

Replies are listed 'Best First'.
Re^2: using grep to search an array
by alicatserver (Initiate) on May 23, 2011 at 20:46 UTC
    Here's the data that I should have added earlier...
    Also, the goal is to print the matching 7 digit line. If I found 7770005 I would get the full line from fileB.
    (And I change the grep line to a push)
    push(@grepnames,grep/$testit/,@fileb);

    fileA:
    7770005
    7770012

    fileB:
    7770001 ABA BANKING JOURNAL.RECORD # = b12822826. OK
    7770002 THE ABNF JOURNAL.RECORD # = b13671558. ok
    7770003 ACADEMIC EXCHANGE QUARTERLY : AEQ.RECORD # = b14618114. ok
    7770004 THE ACADEMY OF MANAGEMENT REVIEW.RECORD # = b12691070. ok
    7770005 THE ACCOUNTING REVIEW.RECORD # = b13123269. ok
    7770006 "ACCOUNTING, ORGANIZATIONS AND SOCIETY.RECORD " # = b15123236. ok
    7770007 "ACTA CRYSTALLOGRAPHICA. SECTION A: CRYSTAL PHYSICS, DIFFRACTION,
    7770008 ADAPTED PHYSICAL ACTIVITY QUARTERLY : APAQ.RECORD # = b13274272. ok
    7770009 ADMINISTRATION IN SOCIAL WORK.RECORD # = b12754225. ok
    7770010 ADMINISTRATIVE SCIENCE QUARTERLY.RECORD # = b13123415.
    7770011 ADOLESCENCE.RECORD # = b13171288. ok
    7770012 ADVANCES IN NURSING SCIENCE.RECORD # = b12795896. ok
      OK, so it is supposed to be a prefix. That means the \n at the end of $testit is getting in the way of letting it match.

      Use chomp inside the loop.

        Chomp worked!! thanks