Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: regex and string functions help needed.

by Samy_rio (Vicar)
on Oct 25, 2006 at 13:15 UTC ( #580569=note: print w/replies, xml ) Need Help??

in reply to regex and string functions help needed.

The below code is developed based on your logic and I am getting the following output. But I am not getting your expected output. Check whether your expected output is correct.

use strict; use warnings; my %p = (A => 2.74, B => 2.64, C => 2.5); my @range = (50,55,60,65,70,75,80,85,90); while(my $str = <DATA>){ chomp($str); print "\nInput : $str\n"; $str =~ s/(\d+)(\w)/($2 . '*') x $1/eg; $str =~ s/(\w)(\w)/$1 . '*' . $2 . '*' /eg; $str =~ s/(?!\*)$/*/; $str =~ s/(.)\*(?!\1)/"$1\*\(".$range[ord($1) - 65]."\/100\)\*"/eg +; $str =~ s/\*+$//; $str =~ s/$_/$p{$_}/g for (keys %p); print "Expression: ".$str ."\n"; print "Output : ",eval$str ,"\n\n"; } __DATA__ 4ABC 2A2B2C 3C ABC Output is: Input : 4ABC Expression: 2.74*2.74*2.74*2.74*(50/100)*2.64*(55/100)*2.5*(60/100) Output : 61.38045890064 Input : 2A2B2C Expression: 2.74*2.74*(50/100)*2.64*2.64*(55/100)*2.5*2.5*(60/100) Output : 53.96012424 Input : 3C Expression: 2.5*2.5*2.5*(60/100) Output : 9.375 Input : ABC Expression: 2.74*(50/100)*2.64*(55/100)*2.5*(60/100) Output : 2.98386

Velusamy R.

eval"print uc\"\\c$_\""for split'','j)@,/6%@0%2,`e@3!-9v2)/@|6%,53!-9@2~j';

Replies are listed 'Best First'.
Re^2: regex and string functions help needed.
by Hofmator (Curate) on Oct 25, 2006 at 13:36 UTC
    My code in Re^3: string functions (in valavanp's original thread) gets to the same results - so we have both understood our fellow monk incorrectly (?) but in the same way :)

    Update: So, valavanp, it would really help if you could spell out for us step by step how you arrive at your expected values ...

    -- 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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://580569]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (7)
As of 2018-05-23 19:48 GMT
Find Nodes?
    Voting Booth?