我想添加阿拉斯加(AK)和夏威夷(HI)的统一$25手续费-当我将州和统一手续费添加到下面的运费矩阵时,我的测试中断。有人能告诉我正确的方向吗?
my $totalPounds = sprintf("%.2f",($totalWeight / 16));
#my $shipping = &getShipUPS($totalPounds, $zip, $shipType);
if ($subtotal <= 24.99) {$shipping = '10.95';}
elsif (($subtotal > 24.99) && ($subtotal <= 74.99)) {$shipping = '13.95';}
elsif (($subtotal > 74.99) && ($subtotal <= 149.99)) {$shipping = '14.95';}
elsif ($subtotal >= $150) {$shipping = '18.95';}
elsif ($state eq 'HI','AK') ($subtotal <= 24.99) {$shipping = '10.95'+'25.00';}
elsif ($state eq 'HI','AK') (($subtotal > 24.99) && ($subtotal <= 74.99)) {$shipping = '13.95'+'25.00';}
elsif ($state eq 'HI','AK') (($subtotal > 74.99) && ($subtotal <= 149.99)) {$shipping = '14.95'+'25.00';}
elsif ($state eq 'HI','AK') ($subtotal >= $150) {$shipping = '18.95'+'25.00';}else
$shipping = sprintf("%.2f", $shipping);
my $total = $subtotal + $tax + $shipping;
$subtotal = sprintf("%.2f", $subtotal);
$total = sprintf("%.2f", $total);
2条答案
按热度按时间sqxo8psd1#
不能像这样对
eq
使用多个参数你需要做的
同样,您不能像这样在
elsif
后面的第一个括号后面放置另一个括号你需要做的
当然,更明智的选择可能是使用散列
if-else逻辑也是各种各样的冗余,下面的代码应该是等价的:
那些弯弯曲曲的如果森林足以让人头晕目眩,而且大部分都是不需要的,如果一个值不小于等于24. 99,那么它一定大于24. 99,所以不需要再检查了。
cunj1qz12#
这段代码完全是一团糟,有多个语法错误,并且违反了DRY。
最好先根据小计计算基本运费。如果州是夏威夷或阿拉斯加,则在第二步中添加$25的运费:
然后: