boom has asked for the wisdom of the Perl Monks concerning the following question:

What is the difference between grep and map ?

Replies are listed 'Best First'.
Re: difference between grep and map
by GrandFather (Saint) on Mar 05, 2009 at 05:01 UTC

    See the documentation: grep and map. Briefly (not not entirely accurately):

    grep expression list runs across a list and returns a list containing the elements of the original list for which the expression is true.

    map expression list runs across a list and returns a list containing the value of expression for each of the elements of the original list.


    True laziness is hard work
Re: difference between grep and map
by eyepopslikeamosquito (Archbishop) on Mar 05, 2009 at 05:53 UTC

    Excellent advice on this is given in the classic Shiny Ball Book, Item 12 "Use foreach, map and grep as appropriate":

    • Use foreach to iterate read-only over each element of a list
    • Use map to create a list based on the contents of another list
    • Use foreach to modify elements of a list
    • Use grep to select elements in a list

Re: difference between grep and map
by lakshmananindia (Chaplain) on Mar 05, 2009 at 06:42 UTC
Re: difference between grep and map
by leslie (Pilgrim) on Mar 05, 2009 at 07:19 UTC
    grep:
    -------

    The grep operator taking list of values and a "testing expression". It takes one value after another and put it into the $_ then evaluate the testing expression in a scalar context. If expression evaluates to a true value it will return the $_ into the output list. In a list context grep return the list of selected items. In a scalar context grep return the number of selected items.

    map:
    ------

    The map operator has a very similar step to grep operator and shares a lot of the same operational steps. It is also temporarily place the items from the list into $_ one at a time. The map operator evaluates the expression in a list context( not a scalar context like grep). Each evaluation of the expression gives a portion of the many results. the overall result in the list concatenation of all individual results. map return no.of elements that are returned in a list context.