hjaber has asked for the wisdom of the Perl Monks concerning the following question:

The code below is working great all except for the calculation to figure the commission. If on the html form you select 5%, 6%, 7%, it should loop through listing all the values or whatever values selected and calculate the commission (example: 5% * $1000.00 = $50.00). Like I said, everything is working except for the result of the calculation.
#! /perl/bin/perl #c04ex6.cgi - calculates the total price of widgets purchased print "Content-type: text/html\n\n"; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); #prevent Perl from creating undeclared variables use strict; #declare variables my ($salesperson, $sales, $k, $commission, $percentage, $newrates); my %rates2 = ("0", .05, "1", .06, "2", .07); my @rates = param('Rate'); #assign values to variables $salesperson = param('Salesperson'); $sales = sprintf "\$%.2f", param('Sales'); #calculate total ordered and total sale #create Web page print <<here; <html> <head> <title>Patton Industries</title> </head> <body> <h2>Bonus Calculation</h2> <br> <strong>Sales Person:</strong> $salesperson<br> <strong>Sales:</strong> $sales<br> here foreach $k(@rates) { $newrates = ($rates2{$k}) * 100; $commission = ($sales * ($rates2{$k})); printf "<strong>Using a rate of </strong>%.1f%%, \n", $newrates +; print "<strong>your bonus is </strong>$commission<br>\n"; } print "</body>\n"; print "</html>\n";
Result code should look like this:
<html> <head> <title>Patton Industries</title> </head> <body> <h2>Bonus Calculation</h2> <br> <strong>Sales Person:</strong> John Doe<br> <strong>Sales:</strong> $1000.00<br> <strong>Using a rate of </strong>5.0%, <strong>your bonus is $50.00</strong>0<br> <strong>Using a rate of </strong>6.0%, <strong>your bonus is $60.00</strong>0<br> <strong>Using a rate of </strong>7.0%, <strong>your bonus is $70.00</strong>0<br> </body> </html>
I really appreciate your help. If you require further information, please let me know. Thanks, Hatem Jaber

Replies are listed 'Best First'.
Re: Help with a calculation
by saintmike (Vicar) on Feb 03, 2006 at 18:23 UTC
    I bet it has something to do with this warning:

    Argument "$10000.00" isn't numeric in multiplication (*) at ./script line 40..

      I don't understand what you mean, can you be more clear? Programming with Perl is new to me and I am not totally clear on your suggestion. Thanks, Hatem Jaber

        In this line:

        $sales = sprintf "\$%.2f", param('Sales');

        your $sales variable will end up containing a dollar sign plus whatever value comes from the 'Sales' parameter. Perl will treat this as a string, not a number...