11 my ($name, $rest) = split /:/;
12 $names{$name} = $rest;
13 $vals{$name} = 0+$rest if $rest =~ /\A\s*\d+\z/;
19 while (!defined $vals{root}) {
21 for my $n (keys %names) {
23 next if defined $vals{$n};
26 for my $v (keys %vals) {
27 $e =~ s/$v/$vals{$v}/g;
30 next if $e =~ /[a-z]/;
32 eval "\$vals{$n} = $e";
33 # say "set \$vals{$n} to $vals{$n}" unless $@;
39 for my $n (sort keys %names) {
40 say "$n = ", defined $vals{$n} ? $vals{$n} : $names{$n};
43 my ($val) = $names{root} =~ /(\d+)/;
44 my ($var) = $names{root} =~ /([a-z]+)/;
45 while (defined $var) {
46 say "$var = $val, var = $names{$var}";
47 my ($arg1, $op, $arg2) = $names{$var} =~ /(\w+)\s+(\S)\s+(\w+)/;
48 say "-> $arg1 $op $arg2";
53 } elsif ($op eq '*') {
55 } elsif ($op eq '+') {
57 } elsif ($op eq '-') {
60 say "var $var = $val";
61 } elsif ($arg1 =~ /\d/) {
65 } elsif ($op eq '*') {
67 } elsif ($op eq '+') {
69 } elsif ($op eq '-') {
72 say "var $var = $val";