Daniel D Jones schreef: > Given something like the following: > > my @variables = [3, 7, 13, 4, 12]; > my @tests = ("2*a+b==c", "c-d+a==e"); > > I need to be able to evaluate the mathematical truth of the tests
#!/usr/bin/perl # beware: this approach is wrong use warnings; use strict; my $rv = qr~[-+]?(?:[0-9]+|[a-z]+)~ ; # value my $ro = qr~(?:[-+*/^]|\*\*)~ ; # operator my $re = qr~\A $rv(?:$ro$rv)* == $rv \z~x ; my @v = <DATA> =~ /(\d+)/g ; print join(', ', @v), "\n" ; while ( <DATA> ) { chomp ; tr/A-Z/a-z/ ; print "$_\t" ; unless (/$re/) { print "ERROR\n" ; next } s/([a-z])/($v[ord($1) - ord('a')])/g ; print "$_\t", eval() ? 'T' : 'F', "\n" ; } __DATA__ 3, 7, 13, 4, 12 2*a+b==c c-d+a==e c-d+a==a c-d+a==ee c-d++a==e -D+c+a==E 2**a==8 2^a==8 -- Affijn, Ruud "Gewoon is een tijger." -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>