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

Re^3: Adding numbers from a loop

by 1nickt (Abbot)
on Aug 07, 2019 at 02:25 UTC ( #11104072=note: print w/replies, xml ) Need Help??


in reply to Re^2: Adding numbers from a loop
in thread Adding numbers from a loop

You have not said whether the other number is in the database or elsewhere in your code.

I assume not in the DB, or you'd just multiply the values in the columns: $sum += ($record->{total} * $record->{price});.

If from another source, and you need to look it up, say from a price sheet based on quantity ordered, make yourself a lookup table:

use strict; use warnings; use feature 'state', 'say'; use Test::More; use JSON; sub calc_rev { state %price_by_qty = ( 1 => 15, 3 => 10, 6 => 8, 10 => 5, ); my $qty = shift; return 0 if ! $qty; for my $level ( sort { $b <=> $a } keys %price_by_qty ) { return $qty * $price_by_qty{ $level } if $qty >= $level; } } # # mock getting an aref of rows for this test file my $json = do { local $/; <DATA> }; my $rows = decode_json( $json ); # my $revenue = 0; for my $row ( @{ $rows } ) { $revenue += calc_rev($row->{total}); } is( $revenue, 123, 'Revenue is 123. Mwahahahaa!'); done_testing; __DATA__ [ {"total":3}, {"total":6}, {"total":1}, {"total":2} ]
Output:
$ perl foo.pl ok 1 - Revenue is 123. Mwahahahaa! 1..1

Hope this helps!


The way forward always starts with a minimal test.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2019-10-13 20:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?