Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^5: string functions

by Hofmator (Curate)
on Oct 25, 2006 at 11:27 UTC ( #580547=note: print w/replies, xml ) Need Help??


in reply to Re^4: string functions
in thread string functions

  1. mark the column in Excel and copy
  2. paste the column into the DATA section of the follwoing script (replacing the example that is already there)
  3. run the script and redirect the output into a file called output.csv
  4. open the output.csv in Excel and copy and paste from there
use strict; use warnings; my @p = (1.5, 2.5, 3.5 ); my @m = (0.5, 0.55, 0.60); sub calc { my $i = shift || 1; my $idx = ord(shift)-65; return $m[$idx] * ($p[$idx]**$i); } for my $str (<DATA>) { chomp($str); my $res = 1; while ($str =~ /(\d)?([A-Z])/g) { $res *= calc($1, $2); } print "$str,$res\n"; } __DATA__ 2A2B2C ABC
You have to make sure, though, that your @p and @m Arrays are expanded to the appropriate number of elements, corresponding to the number of letters from the alphabet that you use. So if you eg. use the letters from A to D then @p and @m should both have 4 elements.

-- Hofmator

Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://580547]
help
Chatterbox?
[Lady_Aleena]: Why does grep(/.*$in.*/, @my_modules) work but grep { $_ =~ /.*$in.*/; $_ } @my_modules not work? What did I do wrong in the second?
[tobyink]: Why are you returning $_ n your grep block? You should return a boolean.
[tobyink]: *in your grep block
[tobyink]: You can use grep { $_ =~ /.*$in.*/; } @my_modules but why not stick to grep(/.*$in.*/, @my_modules)? (The latter is faster.)
[shmem]: Lady_Aleena, in the first example grep evaluates the result from grep and if true, returns $_. In the second, it always returns $_
[shmem]: ..the result from the pattern match
[Lady_Aleena]: tobyink, I did after I failed to get the BLOCK to work. I can't seem to get my brain around grep BLOCK, though I'm okay with grep EXPR.
[shmem]: so in the second example grep returns all true elements of the list passed
[Lady_Aleena]: Okay, so grep BLOCK is not like map BLOCK where something might need to be returned at the end.
[tobyink]: grep { $_ =~ /.*$in.*/; } @my_modules should work just fine. The problem is that you were adding on ;$_ at the end of the block. Why were you doing that?

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2017-05-27 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?