On Jul 24, 2013, at 11:44 AM, Rajeev Kilaru wrote:

> Hello,
> 
> I am looking at the following code someone wrote and I have
> difficultly in understand map usage. Can somebody please explain  how
> does the following code work?
> 
> print OUT2 join( ',', map { $_=~ s/\"/\'/g; "\"$_\"" } @data )


Here is the documentation for map from 'perldoc -f map':

       map BLOCK LIST
       map EXPR,LIST
               Evaluates the BLOCK or EXPR for each element of LIST (locally
               setting $_ to each element) and returns the list value composed
               of the results of each such evaluation.

In your case, BLOCK is 

  { $_=~ s/\"/\'/g; "\"$_\"" } 

and LIST is @data. Therefore, each element of @data is aliased to $_, the 
substitution s//\"/\'/g is performed on it, which changes all double-quote 
characters to single-quote apostrophes, Then, the second 'line' of the BLOCK is 
evaluated and pushed onto the result list, which puts the transformed string 
between double-quotes. The resulting list is joined with '.' characters and 
printed to the OUT2 file stream.


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to