use strict; use warnings; my %sym = ('x' => 4, 'y' => 7); while () { chomp; s/==/=/g; s/=/==/g; while (m/\$([a-zA-Z]\w*)/g) { $sym{$1} = 0 if ! exists $sym{$1}; } s/\$([a-zA-Z]\w*)/\$sym{'$1'}/g; print "$_ evals as " . (eval() - 0) . "\n"; } __DATA__ $x + $y = 11 $x + $y == 14 $x * ($x - $y) + 10 $x + $x1 + $x2