Hi all! The problem is this: I don't fully understand how, when or why to use the map function - The first book I got on perl only mentions map in passing and says its syntax is the same as grep, but instead of returning $_, it returns the result of the map expression. Now, if i try the code below: my @file = ("line 1", "line 2", "line 3", "line 4", "line 5"); my @test = map {/5/} @file; The result when I print @test is: 1 As I understand things, this is the m/5/ being "true" when it gets to the last element of the array ,"line 5" (- though if we had wanted the element of @file that matched we would have used grep). So far so good - A common example is: my @words = map {split ' ', $_} @file; which splits the @file array into words using spaces. Again, as I understand things, we get the words in @words because the split returns all the words from $_. Would it be fair to say we would use map when we expect to have the expression return a list? How would I go about creating a second array using map or grep without changing the original? Can I do that at all? For example: my @elements = map {s/line/element/} @file; just gives "11111" - the "true" values from the substitutions I assume, but changes @file. grep gives me the result in @elements that I want, but it, too, changes @file. I know it sounds simple, but I just have the feeling that I'm missing some vital information, somehow :( Thanks in advance for the help ;) Tom Watson