my %total; while ( my $data = $t_sth->fetchrow_arrayref ) { my ( $amt, $id ) = @$data; $total{$id} += $amt / PRECISION; } $tcash += delete $total{$CASH} || 0; $taccount += delete $total{$ACCOUNT} || 0; $tcheck += delete $total{$CHECK} || 0; $tgift += delete $total{$GIFT} || 0; $tvoucher += delete $total{$VOUCHER} || 0; $tcc_man_auth += delete $total{$CC_MAN_AUTH} || 0; $tcredit += $_ foreach values %total;