ここに簡単なコードがあります。操作の優先度を考慮して少し変更する必要がありますが、何を修正すればよいかわかりません。
`
print "\nEnter the expression: ";
chomp($_ = <>);
print "\n";
sub mul {return $1*$2;}
sub div {return $1/$2;}
sub sum {return $1+$2;}
sub dif {return $1-$2;}
while(
s/([+-]?\d+)\s*[*]\s*([+-]?\d+)/mul($1,$2)/e ||
s/([+-]?\d+)\s*[\/]\s*([+-]?\d+)/div($1,$2)/e ||
s/([+-]?\d+)\s*[+]\s*([+-]?\d+)/sum($1,$2)/e ||
s/([+-]?\d+)\s*[-]\s*([+-]?\d+)/dif($1,$2)/e ||
s/\(\s*([+-]?\d+)\s*\)/$1/e
)
{print "$_\n";}
print "\nThe ansver = $_\n";
`
お役に立てて光栄です、ありがとうございました。