use warnings; use strict; sub calcit { my $in = shift; my %rules = (A => 1,B => 1,C => 0,D => 1); my ($s,$s1,$s2) = (0)x3; while ($in=~/(\d+)([ABCD])/g) { my ($n,$op) = ($1,$2); $s += $n * $rules{$op}; $s1 += $n * $rules{$op} unless $op eq 'D' && $-[0]>0; $s2 += $n * $rules{$op} unless $op eq 'D' && $+[0]