Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: regex and string functions help needed.

by holli (Abbot)
on Oct 25, 2006 at 16:47 UTC ( [id://580623]=note: print w/replies, xml ) Need Help??


in reply to regex and string functions help needed.

valanp,
first of all, you have changed the original content of your node without leaving notice. This will confuse future readers. Please don't do that.

As for your problem: next time please include complete sample data and input/expected output specs. In your OP there was only one special case.

Anyway, here is a subroutine for you that solves your problem:
use warnings; use strict; use Data::Dumper; my %value = ( A => 2.74, B => 2.64, C => 2.5, ); my %factor = ( A => 50/100, B => 55/100, C => 60/100, ); sub calc { # fetch arguments my $expression = shift; my $values = shift; my $factors = shift; # build an array of normalized terms # (normalize = replace non existant factors by 1) # as in 4ABC => 4A 1B 1C my @term; while ( $expression =~ /([0-9]*)([A-Z])/g ) { push @term, [$1?$1:1, $2]; } # now iterate over that array and do the # calculation my $result = 1; $result *= $_->[0] * $values->{$_->[1]} * $factors->{$_->[1]} for @term; return $result; } print calc ("4ABC", \%value, \%factor), "\n"; print calc ("2A2B2C", \%value, \%factor), "\n"; print calc ("3C", \%value, \%factor), "\n"; print calc ("ABC", \%value, \%factor), "\n";


holli, /regexed monk/

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://580623]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-19 19:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found