Sunday, 15 January 2012

How can I make Perl functions that use $_ by default? -


Then I have an array and a simple task that trim white spaces:

  my @ Ar = ("bla", "ha1") sub trim {my $ a = shift; $ A = ~ s / \ s + $ //; $ A}  

Now, I want to apply it to an array with map function. Why can not I do this in the name of the function like it is built in functions in one?

e.g. You can

  print map (length, @ r)  

but you can not do

  print Map (trim, @r)  

You have to do this:

  print map {trim ($ _)} @ar print map (trim ($ _), @r)  

if you are using version 5.10 or later , You specify _ for trim if you are using earlier versions, then use it :

As the last character of a prototype, or before a semicolon, you can use _ $ : if If this argument is not provided, instead of $ _ will be used.

  Use strict; Use warnings; My @ x = ("bla", "ha 1"); Sub trim (_) {my ($ x) = @_; $ X = ~ s! \ S + $ !!; $ X} Print map trim, @x;  

Incidentally, do not use $ a and $ b one sort outside the comparator: They are immune from the strict investigation.

However, I prefer not to use prototypes for primarily writing functions because their use makes it difficult to mentally parse the code. Therefore, I like to use it:

  map trim ($ _), @x;  

See also:

This is absolutely powerful, and it should be used to make the world a better place.


No comments:

Post a Comment